Skip to content

Commit

Permalink
Merge pull request #997 from jdy8739/main
Browse files Browse the repository at this point in the history
[jdy8739] Week 10
  • Loading branch information
jdy8739 authored Feb 15, 2025
2 parents b87290d + 5ce036a commit 2dc5135
Show file tree
Hide file tree
Showing 5 changed files with 173 additions and 1 deletion.
32 changes: 32 additions & 0 deletions invert-binary-tree/jdy8739.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var invertTree = function (root) {
const dfs = (node) => {
if (!node) {
return null;
}

const temp = node.left;
node.left = node.right;
node.right = temp;

dfs(node.left);
dfs(node.right);
}

dfs(root);

return root;
};

// ์‹œ๊ฐ„๋ณต์žก๋„ O(n) ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰์œผ๋กœ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฏ€๋กœ
28 changes: 28 additions & 0 deletions jump-game/jdy8739.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function (nums) {
const dp = new Array(nums.length).fill(false);

dp[0] = true;

for (let i = 0; i < nums.length; i++) {
if (!dp[i]) {
continue;
}

for (let j = 1; j < nums[i] + 1; j++) {
if (i + j >= nums.length) {
break;
}

dp[i + j] = true;
}
}

return dp[dp.length - 1];
};

// ์‹œ๊ฐ„๋ณต์žก๋„ O(n2) -> nums์˜ ๊ธธ์ด๋Œ€๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ 1๋ถ€ํ„ฐ nums[j]์˜ ๊ฐ’๊นŒ์ง€ ์ˆœํšŒํ•˜๋Š” 2์ค‘ ๋ฃจํ”„๋ฅผ ๋Œ๊ธฐ ๋•Œ๋ฌธ
// ๊ณต๊ฐ„๋ณต์žก๋„ 0(n) -> nums์˜ ๊ธธ์ด์— ๋”ฐ๋ผ dp ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ
3 changes: 2 additions & 1 deletion maximum-product-subarray/jdy8739.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ var maxProduct = function (nums) {
return answer;
};

// ์‹œ๊ฐ„๋ณต์žก๋„ O(n) * O(8) -> nums์˜ ๊ธธ์ด ๋งŒํผ์„ for ๋ฌธ์œผ๋กœ ์ˆœํ™˜ํ•˜๋ฉด์„œ Mathํด๋ž˜์Šค์˜ max, min๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ(์ธ์ž๊ฐ€ 3๊ฐœ, 3๊ฐœ, 2๊ฐœ ์ด๋ฏ€๋กœ ์ด 8ํšŒ ์ˆœํšŒ)
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n) -> nums์˜ ๊ธธ์ด ๋งŒํผ์„ for ๋ฌธ ์ˆœํ™˜ํ•˜๊ธฐ๋•Œ๋ฌธ์—
// ๊ณต๊ฐ„๋ณต์žก๋„ O(1) -> ํŒŒ๋ผ๋ฏธํ„ฐ nums์— ๋Œ€ํ•ด ์˜๋ฏธ์žˆ๋Š” ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜ํ• ๋‹น์ด ์—†์Œ

44 changes: 44 additions & 0 deletions merge-k-sorted-lists/jdy8739.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode[]} lists
* @return {ListNode}
*/
var mergeKLists = function (lists) {
const arr = [];

for (let i = 0; i < lists.length; i++) {
let list = lists[i];

while (list) {
arr.push(list.val);
list = list.next;
}
}

if (!arr.length) {
return null;
}

arr.sort((a, b) => a - b);

const first = new ListNode(arr[0]);

let node = first;

for (let j = 1; j < arr.length; j++) {
const next = new ListNode(arr[j]);
node.next = next;
node = next;
}

return first;
};

// ์‹œ๊ฐ„๋ณต์žก๋„ -> for๋ฌธ ์ดํ›„ sort ์ดํ›„ for๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ด๋Š” O(n) + O(nlogn) + O(n)์ด๋ฏ€๋กœ O(nlogn)๊ฐ€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋œ๋‹ค
// ๊ณต๊ฐ„๋ณต์žก๋„ -> lists์˜ ๋…ธ๋“œ ์ˆ˜ ๋งŒํผ ๊ธธ์ด๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ 0(n)
67 changes: 67 additions & 0 deletions search-in-rotated-sorted-array/jdy8739.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function (nums, target) {
const pivotIndex = findPivot(nums);

const firstHalfResult = findIndex(nums, 0, pivotIndex - 1, target);

return firstHalfResult === -1 ? findIndex(nums, pivotIndex, nums.length - 1, target) : firstHalfResult;
};

function findIndex(nums, start, end, target) {
while (start <= end) {
// console.log(start, end, target)
const mid = start + Math.floor((end - start) / 2);

const midValue = nums[mid];

if (midValue === target) {
return mid;
}

if (nums[start] === target) {
return start;
}

if (nums[end] === target) {
return end;
}

if (nums[mid] < target) {
start = mid + 1;
} else if (nums[mid] > target) {
end = mid - 1;
}
}

return -1;
}


function findPivot(nums) {
let low = 0;
let high = nums.length - 1;

while (low <= high) {
const mid = low + Math.floor((high - low) / 2);

if (0 < mid && nums[mid - 1] > nums[mid]) {
return mid;
}

if (nums[0] <= nums[mid]) {
low = mid + 1;
} else {
high = mid - 1;
}

}

return 0;
}

// ์‹œ๊ฐ„๋ณต์žก๋„ O(logn) -> ํ”ผ๋ด‡, ์ตœ์†Œ๊ฐ’์„ ์ฐพ์„ ๋•Œ ์ด์ง„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ
// ๊ณต๊ฐ„๋ณต์žก๋„ O(1) -> ๊ณ ์ •๋œ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ด์™ธ์—๋Š” ๋™์ ์ธ ๋ฐฐ์—ด, ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ

0 comments on commit 2dc5135

Please sign in to comment.