Skip to content

Commit dbdfd84

Browse files
authored
[oh-chaeyeon] 24.11.19 (#99)
* 201 / Binary Tree Level Order Traversal / Medium / 21m 49s * 572 / Subtree Of Another Tree / Easy / 25m 09s * 213 / House Robber II / Medium / 20m 31s * 207 / Course Schedule / Medium / 21m 49s * 150 / Evaluate Reverse Polish Notation / Medium / 14m 58s
1 parent bbceb65 commit dbdfd84

File tree

5 files changed

+172
-0
lines changed

5 files changed

+172
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* @param {string[]} tokens
3+
* @return {number}
4+
*/
5+
var evalRPN = function (tokens) {
6+
const stack = [];
7+
for (const token of tokens) {
8+
if (!isNaN(token)) {
9+
stack.push(Number(token));
10+
} else {
11+
const b = stack.pop();
12+
const a = stack.pop();
13+
14+
let result;
15+
switch (token) {
16+
case "+":
17+
result = a + b;
18+
break;
19+
case "-":
20+
result = a - b;
21+
break;
22+
case "*":
23+
result = a * b;
24+
break;
25+
case "/":
26+
result = Math.trunc(a / b);
27+
break;
28+
}
29+
stack.push(result);
30+
}
31+
}
32+
33+
return stack.pop();
34+
};
35+
36+
// Time taken : 14m 58s
37+
// Runtime : 2ms
38+
// Memory : 51.92MB
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
* @return {number[][]}
12+
*/
13+
var levelOrder = function (root) {
14+
const result = [];
15+
const Tree = (node, level) => {
16+
if (!node) return;
17+
18+
if (result.length === level) {
19+
result.push([]);
20+
}
21+
22+
result[level].push(node.val);
23+
Tree(node.left, level + 1);
24+
Tree(node.right, level + 1);
25+
};
26+
27+
Tree(root, 0);
28+
return result;
29+
};
30+
31+
// Time taken : 21m 49s
32+
// Runtime : 1ms
33+
// Memory : 55.59MB

oh-chaeyeon/207_Course_Schedule.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number} numCourses
3+
* @param {number[][]} prerequisites
4+
* @return {boolean}
5+
*/
6+
var canFinish = function (numCourses, prerequisites) {
7+
const graph = Array.from({ length: numCourses }, () => []);
8+
for (const [a, b] of prerequisites) {
9+
graph[b].push(a);
10+
}
11+
12+
const visited = new Array(numCourses).fill(0);
13+
14+
const dfs = (course) => {
15+
if (visited[course] === 1) return false;
16+
if (visited[course] === 2) return true;
17+
18+
visited[course] = 1;
19+
for (const nextCourse of graph[course]) {
20+
if (!dfs(nextCourse)) return false;
21+
}
22+
visited[course] = 2;
23+
return true;
24+
};
25+
26+
for (let i = 0; i < numCourses; i++) {
27+
if (!dfs(i)) return false;
28+
}
29+
30+
return true;
31+
};
32+
33+
// Time taken : 21m 49s
34+
// Runtime : 14ms
35+
// Memory : 55.35MB

oh-chaeyeon/213_House_Robber_II.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function (nums) {
6+
const n = nums.length;
7+
8+
if (n === 0) return 0;
9+
if (n === 1) return nums[0];
10+
11+
const FindMoney = (houses) => {
12+
let one = 0,
13+
two = 0;
14+
for (let money of houses) {
15+
const temp = one;
16+
one = Math.max(one, two + money);
17+
two = temp;
18+
}
19+
return one;
20+
};
21+
22+
return Math.max(FindMoney(nums.slice(0, n - 1)), FindMoney(nums.slice(1)));
23+
};
24+
25+
// Time taken : 20m 31s
26+
// Runtime : 0ms
27+
// Memory : 48.34MB
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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 {TreeNode} subRoot
12+
* @return {boolean}
13+
*/
14+
var isSubtree = function (root, subRoot) {
15+
if (!subRoot) return true;
16+
if (!root) return false;
17+
18+
if (root.val === subRoot.val) {
19+
const checkSame = (node1, node2) => {
20+
if (!node1 && !node2) return true;
21+
if (!node1 || !node2) return false;
22+
if (node1.val !== node2.val) return false;
23+
24+
return (
25+
checkSame(node1.left, node2.left) && checkSame(node1.right, node2.right)
26+
);
27+
};
28+
29+
if (checkSame(root, subRoot)) {
30+
return true;
31+
}
32+
}
33+
34+
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
35+
};
36+
37+
// Time taken : 25m 09s
38+
// Runtime : 6ms
39+
// Memory : 55.18MB

0 commit comments

Comments
 (0)