Skip to content

Commit b5d86bb

Browse files
authored
Merge pull request #1029 from gwbaik9717/main
[ganu] Week11
2 parents a7b1113 + ff6d167 commit b5d86bb

File tree

4 files changed

+175
-0
lines changed

4 files changed

+175
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(n)
3+
4+
/**
5+
* Definition for a binary tree node.
6+
* function TreeNode(val, left, right) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.left = (left===undefined ? null : left)
9+
* this.right = (right===undefined ? null : right)
10+
* }
11+
*/
12+
/**
13+
* @param {TreeNode} root
14+
* @return {number}
15+
*/
16+
var maxPathSum = function (root) {
17+
let answer = Number.MIN_SAFE_INTEGER;
18+
19+
const dfs = (current) => {
20+
const candidates = [current.val];
21+
22+
if (current.left) {
23+
dfs(current.left);
24+
candidates.push(current.left.val + current.val);
25+
}
26+
27+
if (current.right) {
28+
dfs(current.right);
29+
candidates.push(current.right.val + current.val);
30+
}
31+
32+
// 현재 노드가 루트일 경우
33+
if (current.left && current.right) {
34+
answer = Math.max(
35+
answer,
36+
current.left.val + current.right.val + current.val
37+
);
38+
}
39+
40+
current.val = Math.max(...candidates);
41+
answer = Math.max(answer, current.val);
42+
};
43+
44+
dfs(root);
45+
46+
return answer;
47+
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(n)
3+
4+
/**
5+
* Definition for a binary tree node.
6+
* function TreeNode(val, left, right) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.left = (left===undefined ? null : left)
9+
* this.right = (right===undefined ? null : right)
10+
* }
11+
*/
12+
/**
13+
* @param {TreeNode} root
14+
* @return {number}
15+
*/
16+
var maxDepth = function (root) {
17+
let answer = 0;
18+
19+
const dfs = (current, depth) => {
20+
if (!current) {
21+
return;
22+
}
23+
24+
if (answer < depth) {
25+
answer = depth;
26+
}
27+
28+
if (current.left) {
29+
dfs(current.left, depth + 1);
30+
}
31+
32+
if (current.right) {
33+
dfs(current.right, depth + 1);
34+
}
35+
};
36+
37+
dfs(root, 1);
38+
return answer;
39+
};

merge-intervals/gwbaik9717.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Time complexity: O(nlogn)
2+
// Space complexity: O(n)
3+
4+
/**
5+
* @param {number[][]} intervals
6+
* @return {number[][]}
7+
*/
8+
var merge = function (intervals) {
9+
intervals.sort((a, b) => {
10+
if (a[0] === b[0]) {
11+
return a[1] - b[1];
12+
}
13+
14+
return a[0] - b[0];
15+
});
16+
17+
const answer = [intervals[0]];
18+
19+
for (let i = 1; i < intervals.length; i++) {
20+
const current = intervals.at(i);
21+
const prev = answer.at(-1);
22+
23+
// No overlapping
24+
if (current[0] > prev[1]) {
25+
answer.push(current);
26+
continue;
27+
}
28+
29+
answer[answer.length - 1] = [prev[0], Math.max(prev[1], current[1])];
30+
}
31+
32+
return answer;
33+
};

reorder-list/gwbaik9717.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(1)
3+
4+
/**
5+
* Definition for singly-linked list.
6+
* function ListNode(val, next) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.next = (next===undefined ? null : next)
9+
* }
10+
*/
11+
/**
12+
* @param {ListNode} head
13+
* @return {void} Do not return anything, modify head in-place instead.
14+
*/
15+
var reorderList = function (head) {
16+
// middle 찾기
17+
let slow = head;
18+
let fast = slow;
19+
20+
while (fast && fast.next) {
21+
fast = fast.next.next;
22+
slow = slow.next;
23+
}
24+
25+
const middle = slow;
26+
27+
// 후반부 뒤집기 (middle 부터)
28+
let next = null;
29+
let current = middle;
30+
31+
while (current) {
32+
const temp = current.next;
33+
current.next = next;
34+
next = current;
35+
current = temp;
36+
}
37+
38+
// 합치기
39+
let back = next;
40+
let reordered = head;
41+
42+
while (reordered && back) {
43+
const temp = reordered.next;
44+
45+
reordered.next = back;
46+
back = back.next;
47+
reordered = reordered.next;
48+
49+
reordered.next = temp;
50+
reordered = reordered.next;
51+
}
52+
53+
if (reordered) {
54+
reordered.next = null;
55+
}
56+
};

0 commit comments

Comments
 (0)