Skip to content

Commit 1d173f8

Browse files
authored
Merge pull request #1560 from hoyeongkwak/main
[hoyeongkwak] week 10 solutions
2 parents 060bcfd + 923919b commit 1d173f8

File tree

5 files changed

+122
-0
lines changed

5 files changed

+122
-0
lines changed

course-schedule/hoyeongkwak.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function canFinish(numCourses: number, prerequisites: number[][]): boolean {
2+
const graph: number[][] = Array.from({ length: numCourses }, () => [])
3+
for (const [course, prereq] of prerequisites) {
4+
graph[course].push(prereq)
5+
}
6+
const traversing = new Set<number>()
7+
const finished = new Set<number>()
8+
9+
const finish = (crs: number): boolean => {
10+
if (traversing.has(crs)) return false
11+
if (finished.has(crs)) return true
12+
13+
traversing.add(crs)
14+
for (const pre of graph[crs]) {
15+
if (!finish(pre)) return false
16+
}
17+
traversing.delete(crs)
18+
finished.add(crs)
19+
return true
20+
}
21+
for (let crs = 0; crs < numCourses; crs++) {
22+
if (!finish(crs)) return false
23+
}
24+
return true
25+
};

invert-binary-tree/hoyeongkwak.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
function invertTree(root: TreeNode | null): TreeNode | null {
16+
if (root == null) return null
17+
const temp = root.left
18+
root.left = root.right
19+
root.right = temp
20+
21+
invertTree(root.left)
22+
invertTree(root.right)
23+
return root
24+
};

jump-game/hoyeongkwak.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function canJump(nums: number[]): boolean {
2+
const memo: boolean[] = new Array(nums.length).fill(null)
3+
const dfs = (start: number): boolean => {
4+
if (start >= nums.length - 1) {
5+
return true
6+
}
7+
if (memo[start] != null) return memo[start]
8+
const maxJump = nums[start]
9+
for (let i = 1; i <= maxJump; i++) {
10+
if (dfs(start + i)) {
11+
memo[start] = true
12+
return true
13+
}
14+
}
15+
memo[start] = false
16+
return false
17+
}
18+
return dfs(0)
19+
};

merge-k-sorted-lists/hoyeongkwak.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* class ListNode {
4+
* val: number
5+
* next: ListNode | null
6+
* constructor(val?: number, next?: ListNode | null) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.next = (next===undefined ? null : next)
9+
* }
10+
* }
11+
*/
12+
13+
function mergeKLists(lists: Array<ListNode | null>): ListNode | null {
14+
const tempArray: Array<ListNode> = []
15+
lists.forEach((node) => {
16+
while (node) {
17+
tempArray.push(node)
18+
node = node.next
19+
}
20+
})
21+
tempArray.sort((node1, node2) => node1.val - node2.val)
22+
let result = tempArray[0] ?? null
23+
tempArray.forEach((node, index, arr) => {
24+
node.next = arr[index + 1] ?? null
25+
})
26+
return result
27+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
function search(nums: number[], target: number): number {
2+
// return nums.indexOf(target)
3+
let left = 0
4+
let right = nums.length - 1
5+
6+
while (left <= right) {
7+
const mid = Math.floor((left + right) / 2)
8+
if (nums[mid] === target) {
9+
return mid
10+
}
11+
12+
if (nums[left] <= nums[mid]) {
13+
if (target >= nums[left] && target < nums[mid]) {
14+
right = mid - 1
15+
} else {
16+
left = mid + 1
17+
}
18+
} else {
19+
if (target > nums[mid] && target <= nums[right]) {
20+
left = mid + 1
21+
} else {
22+
right = mid - 1
23+
}
24+
}
25+
}
26+
return -1
27+
};

0 commit comments

Comments
 (0)