Skip to content

Commit cb05274

Browse files
authored
Merge pull request #1067 from jdy8739/main
[jdy8739] week 13
2 parents 7800297 + 98398cc commit cb05274

File tree

3 files changed

+157
-0
lines changed

3 files changed

+157
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
* @param {number} k
12+
* @return {number}
13+
*/
14+
var kthSmallest = function(root, k) {
15+
const arr = [];
16+
17+
const dfs = (node) => {
18+
arr.push(node.val);
19+
20+
if (node?.left) {
21+
dfs(node.left);
22+
}
23+
24+
if (node?.right) {
25+
dfs(node.right);
26+
}
27+
}
28+
29+
dfs(root);
30+
31+
const sort = arr.sort((a, b) => a - b);
32+
33+
return sort[k - 1];
34+
};
35+
36+
// ์‹œ๊ฐ„๋ณต์žก๋„ -> O(nlogn) dfs๋กœ ๋…ธ๋“œ์˜ val์„ ๋ฐฐ์—ด์— ๋„ฃ๊ณ  ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„์ด ์†Œ์š”๋จ
37+
// ๊ณต๊ฐ„๋ณต์žก๋„ -> O(n) ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋งŒํผ arr์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•จ
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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+
* @param {TreeNode} root
11+
* @param {TreeNode} p
12+
* @param {TreeNode} q
13+
* @return {TreeNode}
14+
*/
15+
var lowestCommonAncestor = function (root, p, q) {
16+
const left = Math.min(p.val, q.val);
17+
const right = Math.max(p.val, q.val);
18+
19+
const dfs = (node) => {
20+
if (!node) {
21+
return;
22+
}
23+
24+
if (node.val >= left && node.val <= right) {
25+
return node;
26+
}
27+
28+
if (node.val > left && node.val > right) {
29+
return dfs(node.left);
30+
}
31+
32+
if (node.val < left && node.val < right) {
33+
return dfs(node.right);
34+
}
35+
}
36+
37+
return dfs(root);
38+
};
39+
40+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(logn) -> ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ด์ง„ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ๋–„๋ฌธ(๋™์ผํ•œ ๊นŠ์ด์—์„œ ํ•œ ๋ฒˆ ์™ผ์ชฝ์„ ๋ฐฉ๋ฌธํ•˜์˜€๋‹ค๋ฉด, ๊ทธ ๊นŠ์ด์—์„œ ์˜ค๋ฅธ์ชฝ์„ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์Œ)
41+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(h) -> ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฏ€๋กœ ํŠธ๋ฆฌ์˜ ๋†’์ด๋งŒํผ ์ตœ๋Œ€ ์ฝœ์Šคํƒ์˜ ์Œ“์ž„์ด ๋ฐœ์ƒ
42+
43+
/**
44+
* Definition for a binary tree node.
45+
* function TreeNode(val) {
46+
* this.val = val;
47+
* this.left = this.right = null;
48+
* }
49+
*/
50+
51+
/**
52+
* @param {TreeNode} root
53+
* @param {TreeNode} p
54+
* @param {TreeNode} q
55+
* @return {TreeNode}
56+
*/
57+
var lowestCommonAncestor = function (root, p, q) {
58+
let node = root;
59+
60+
while (node) {
61+
if (node.val >= p.val && node.val <= q.val) {
62+
return node;
63+
} else if (node.val < p.val && node.val < q.val) {
64+
node = node.right;
65+
} else if (node.val > p.val && node.val > q.val) {
66+
node = node.left;
67+
} else {
68+
break;
69+
}
70+
}
71+
72+
return node;
73+
};
74+
75+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(logn) -> ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ด์ง„ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ๋–„๋ฌธ(๋™์ผํ•œ ๊นŠ์ด์—์„œ ํ•œ ๋ฒˆ ์™ผ์ชฝ์„ ๋ฐฉ๋ฌธํ•˜์˜€๋‹ค๋ฉด, ๊ทธ ๊นŠ์ด์—์„œ ์˜ค๋ฅธ์ชฝ์„ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์Œ)
76+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(1) -> ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ์š”๊ตฌ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‚˜ ์ฝœ์Šคํƒ์˜ ์Œ“์ž„์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

โ€Žmeeting-rooms/jdy8739.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import {
2+
Interval,
3+
} from '/opt/node/lib/lintcode/index.js';
4+
5+
/**
6+
* Definition of Interval:
7+
* class Interval {
8+
* constructor(start, end) {
9+
* this.start = start;
10+
* this.end = end;
11+
* }
12+
* }
13+
*/
14+
15+
export class Solution {
16+
/**
17+
* @param intervals: an array of meeting time intervals
18+
* @return: if a person could attend all meetings
19+
*/
20+
canAttendMeetings(intervals) {
21+
const sort = intervals.sort((a, b) => {
22+
if (a[1] === b[1]) {
23+
return a[0] - b[0];
24+
}
25+
26+
return a[1] - b[1];
27+
})
28+
29+
for (let i = 0; i < sort.length - 2; i++) {
30+
const current = sort[i][1];
31+
const next = sort[i + 1][0];
32+
33+
if (current > next) {
34+
return false;
35+
}
36+
}
37+
38+
return true;
39+
}
40+
}
41+
42+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(nlogn) -> sort ํ•จ์ˆ˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์‹œ๊ฐ„๋ณต์žก๋„
43+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(1) -> ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, ํ•จ์ˆ˜์‹คํ–‰์Šคํƒ ์—†์Œ
44+

0 commit comments

Comments
ย (0)