Skip to content

Commit 21d31a9

Browse files
authored
Merge pull request #1604 from hoyeongkwak/main
[hoyeongkwak] Week 12 Solutions
2 parents f32225e + a456f63 commit 21d31a9

File tree

4 files changed

+139
-0
lines changed

4 files changed

+139
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
Time complexity: O(nlogn)
3+
Space complexity: O(n)
4+
*/
5+
function eraseOverlapIntervals(intervals: number[][]): number {
6+
intervals.sort((a, b) => a[1] - b[1])
7+
let cnt = 0
8+
let end = intervals[0][1]
9+
for (let i = 1; i < intervals.length; i++) {
10+
if (intervals[i][0] < end) {
11+
cnt++
12+
} else {
13+
end = intervals[i][1]
14+
}
15+
}
16+
return cnt
17+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
Time complexity: O(n)
14+
Space complexity: O(h)
15+
*/
16+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
17+
if (head == null) return head
18+
const listLength = (node: ListNode | null): number => {
19+
if (node == null) return 0
20+
return 1 + listLength(node.next)
21+
}
22+
const nodeLen = listLength(head)
23+
let dummy: ListNode = new ListNode(0, head);
24+
let node = dummy
25+
for (let i = 0; i < nodeLen - n; i++) {
26+
if (node.next) {
27+
node = node.next
28+
}
29+
}
30+
node.next = node.next.next
31+
return dummy.next
32+
};

same-tree/hoyeongkwak.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
Time complexity: O(m)
16+
Space complexity: O(h)
17+
*/
18+
function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean {
19+
if (p == null && q == null) return true
20+
if (p == null || q == null) return false
21+
if (p.val !== q.val) return false
22+
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
23+
};
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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+
/*
16+
* Encodes a tree to a single string.
17+
*/
18+
function serialize(root: TreeNode | null): string {
19+
/*
20+
Time complexity: O(n)
21+
Space complexity: O(n)
22+
*/
23+
const strArray = []
24+
const dfs = (node: TreeNode): void => {
25+
if (node == null) {
26+
strArray.push('null')
27+
return
28+
}
29+
strArray.push(node.val)
30+
dfs(node.left)
31+
dfs(node.right)
32+
}
33+
dfs(root)
34+
return strArray.join(',')
35+
};
36+
37+
/*
38+
* Decodes your encoded data to tree.
39+
*/
40+
function deserialize(data: string): TreeNode | null {
41+
/*
42+
Time complexity: O(n)
43+
Space complexity: O(n)
44+
*/
45+
const values = data.split(',')
46+
let idx = 0
47+
const dfs = (): TreeNode | null => {
48+
if (idx >= values.length || values[idx] == 'null') {
49+
idx++
50+
return null
51+
}
52+
const node = new TreeNode(+values[idx])
53+
idx++
54+
node.left = dfs()
55+
node.right = dfs()
56+
return node
57+
}
58+
59+
return dfs()
60+
};
61+
62+
63+
/**
64+
* Your functions will be called as such:
65+
* deserialize(serialize(root));
66+
*/
67+

0 commit comments

Comments
 (0)