Skip to content

Commit 2122f12

Browse files
committed
12주차 solved
1 parent 46b01c0 commit 2122f12

File tree

5 files changed

+184
-0
lines changed

5 files changed

+184
-0
lines changed

non-overlapping-intervals/hsskey.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number[][]} intervals
3+
* @return {number}
4+
*/
5+
var eraseOverlapIntervals = function(intervals) {
6+
intervals.sort((a, b) => a[0] - b[0]);
7+
8+
let res = 0;
9+
let prevEnd = intervals[0][1];
10+
11+
for (let i = 1; i < intervals.length; i++) {
12+
const [start, end] = intervals[i];
13+
14+
if (start >= prevEnd) {
15+
prevEnd = end;
16+
} else {
17+
res += 1;
18+
prevEnd = Math.min(end, prevEnd);
19+
}
20+
}
21+
22+
return res;
23+
};
24+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
export class Solution {
2+
/**
3+
* @param {number} n - the number of vertices
4+
* @param {number[][]} edges - the edges of undirected graph
5+
* @return {number} - the number of connected components
6+
*/
7+
countComponents(n, edges) {
8+
const par = Array.from({ length: n }, (_, i) => i);
9+
const rank = Array(n).fill(1);
10+
11+
const find = (n1) => {
12+
let res = n1;
13+
while (res !== par[res]) {
14+
par[res] = par[par[res]]; // path compression
15+
res = par[res];
16+
}
17+
return res;
18+
};
19+
20+
const union = (n1, n2) => {
21+
const p1 = find(n1);
22+
const p2 = find(n2);
23+
if (p1 === p2) return 0;
24+
25+
if (rank[p2] > rank[p1]) {
26+
par[p1] = p2;
27+
rank[p2] += rank[p1];
28+
} else {
29+
par[p2] = p1;
30+
rank[p1] += rank[p2];
31+
}
32+
33+
return 1;
34+
};
35+
36+
let res = n;
37+
for (const [n1, n2] of edges) {
38+
res -= union(n1, n2);
39+
}
40+
41+
return res;
42+
}
43+
}
44+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
/**
10+
* @param {ListNode} head
11+
* @param {number} n
12+
* @return {ListNode}
13+
*/
14+
var removeNthFromEnd = function(head, n) {
15+
const dummy = new ListNode(0, head);
16+
let left = dummy;
17+
let right = head;
18+
19+
// advance right pointer n steps ahead
20+
while (n > 0 && right) {
21+
right = right.next;
22+
n--;
23+
}
24+
25+
// move both pointers until right reaches the end
26+
while (right) {
27+
left = left.next;
28+
right = right.next;
29+
}
30+
31+
// delete the nth node from end
32+
left.next = left.next.next;
33+
34+
return dummy.next;
35+
};
36+

same-tree/hsskey.js

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+
* 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+
/**
11+
* @param {TreeNode} p
12+
* @param {TreeNode} q
13+
* @return {boolean}
14+
*/
15+
var isSameTree = function(p, q) {
16+
if (!p && !q) {
17+
return true;
18+
}
19+
if (!p || !q || p.val !== q.val) {
20+
return false;
21+
}
22+
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
23+
};
24+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val) {
4+
* this.val = val;
5+
* this.left = this.right = null;
6+
* }
7+
*/
8+
9+
/**
10+
* Encodes a tree to a single string.
11+
*
12+
* @param {TreeNode} root
13+
* @return {string}
14+
*/
15+
var serialize = function(root) {
16+
const res = [];
17+
18+
const dfs = (node) => {
19+
if (!node) {
20+
res.push("N");
21+
return;
22+
}
23+
res.push(String(node.val));
24+
dfs(node.left);
25+
dfs(node.right);
26+
};
27+
28+
dfs(root);
29+
return res.join(".");
30+
};
31+
32+
/**
33+
* Decodes your encoded data to tree.
34+
*
35+
* @param {string} data
36+
* @return {TreeNode}
37+
*/
38+
var deserialize = function(data) {
39+
const vals = data.split(".");
40+
let i = 0;
41+
42+
const dfs = () => {
43+
if (vals[i] === "N") {
44+
i++;
45+
return null;
46+
}
47+
const node = new TreeNode(parseInt(vals[i]));
48+
i++;
49+
node.left = dfs();
50+
node.right = dfs();
51+
return node;
52+
};
53+
54+
return dfs();
55+
};
56+

0 commit comments

Comments
 (0)