Skip to content

Commit 00114e6

Browse files
authored
Merge pull request #1350 from hsskey/main
[hsskey] WEEK 04 solutions
2 parents 2e31fa1 + 7bf90b5 commit 00114e6

File tree

5 files changed

+152
-0
lines changed

5 files changed

+152
-0
lines changed

โ€Žcoin-change/hsskey.jsโ€Ž

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} coins
3+
* @param {number} amount
4+
* @return {number}
5+
*/
6+
var coinChange = function(coins, amount) {
7+
const dp = new Array(amount + 1).fill(Infinity)
8+
9+
dp[0] = 0
10+
11+
for(coin of coins) {
12+
for(let i = coin; i <= amount; i++) {
13+
dp[i] = Math.min(dp[i], dp[i - coin] + 1)
14+
}
15+
}
16+
17+
return dp[amount] === Infinity ? -1 : dp[amount]
18+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var findMin = function(nums) {
6+
if(nums.length === 1) {
7+
return nums[0]
8+
}
9+
10+
if(nums[0] < nums[nums.length -1]) {
11+
return nums[0]
12+
}
13+
14+
let left = 0
15+
let right = nums.length - 1
16+
17+
while(left < right) {
18+
const mid = Math.floor((left + right) / 2)
19+
20+
if(nums[mid] > nums[right]) {
21+
left = mid + 1
22+
} else {
23+
right = mid
24+
}
25+
}
26+
return nums[left]
27+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val, left, right) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.left = (left===undefined ? null : left)
6+
* this.right = (right===undefined ? null : right)
7+
* }
8+
*/
9+
/**
10+
* @param {TreeNode} root
11+
* @return {number}
12+
*/
13+
var maxDepth = function(root) {
14+
function dfs(node) {
15+
if(!node) {
16+
return 0
17+
}
18+
19+
const left = dfs(node.left)
20+
const right = dfs(node.right)
21+
22+
return Math.max(left, right) + 1
23+
}
24+
return dfs(root)
25+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} list1
10+
* @param {ListNode} list2
11+
* @return {ListNode}
12+
*/
13+
var mergeTwoLists = function(list1, list2) {
14+
const dummy = new ListNode()
15+
let tail = dummy
16+
17+
while(list1 && list2) {
18+
if(list1.val < list2.val) {
19+
tail.next = list1
20+
list1 = list1.next
21+
} else {
22+
tail.next = list2
23+
list2 = list2.next
24+
}
25+
tail = tail.next
26+
}
27+
28+
if(list1) {
29+
tail.next = list1
30+
} else if(list2) {
31+
tail.next = list2
32+
}
33+
return dummy.next
34+
};

โ€Žword-search/hsskey.jsโ€Ž

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* @param {character[][]} board
3+
* @param {string} word
4+
* @return {boolean}
5+
*/
6+
var exist = function(board, word) {
7+
const rows = board.length;
8+
const cols = board[0].length;
9+
10+
function backtrack(r, c, index) {
11+
// ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋‹ค ์ฐพ์•˜์œผ๋ฉด true ๋ฐ˜ํ™˜
12+
if (index === word.length) return true;
13+
14+
// ๊ฒฝ๊ณ„ ์กฐ๊ฑด ๋ฐ ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด false
15+
if (
16+
r < 0 || r >= rows ||
17+
c < 0 || c >= cols ||
18+
board[r][c] !== word[index]
19+
) {
20+
return false;
21+
}
22+
23+
// ํ˜„์žฌ ์œ„์น˜ ๋ฌธ์ž ์ €์žฅ ํ›„, ๋ฐฉ๋ฌธ ํ‘œ์‹œ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ
24+
const temp = board[r][c];
25+
board[r][c] = '#';
26+
27+
// 4๋ฐฉํ–ฅ ํƒ์ƒ‰: ์ƒํ•˜์ขŒ์šฐ
28+
const directions = [[-1,0], [1,0], [0,-1], [0,1]];
29+
for (const [dr, dc] of directions) {
30+
if (backtrack(r + dr, c + dc, index + 1)) {
31+
return true;
32+
}
33+
}
34+
35+
// ์ƒํƒœ ๋ณต๊ตฌ
36+
board[r][c] = temp;
37+
return false;
38+
}
39+
40+
// ๋ชจ๋“  ์œ„์น˜์—์„œ ์‹œ์ž‘ ๊ฐ€๋Šฅ
41+
for (let i = 0; i < rows; i++) {
42+
for (let j = 0; j < cols; j++) {
43+
if (backtrack(i, j, 0)) return true;
44+
}
45+
}
46+
47+
return false;
48+
};

0 commit comments

Comments
ย (0)