Skip to content

Commit df4965d

Browse files
authored
Joo kangsan (#104)
* 150 / Evaluate Reverse Polish Notation / medium / 17m40s * 203 / House Robber II / medium / 21m40s * 102 / House Robber II / medium / 14m20s * 572 / Subtree of Another Tree / medium / 24m
1 parent 58982e5 commit df4965d

File tree

4 files changed

+134
-0
lines changed

4 files changed

+134
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
if (!root) return [];
15+
16+
const result = [];
17+
const queue = [root];
18+
19+
while (queue.length > 0) {
20+
const levelSize = queue.length;
21+
const currentLevel = [];
22+
23+
for (let i = 0; i < levelSize; i++) {
24+
const node = queue.shift();
25+
currentLevel.push(node.val);
26+
27+
if (node.left) queue.push(node.left);
28+
if (node.right) queue.push(node.right);
29+
}
30+
31+
result.push(currentLevel);
32+
}
33+
34+
return result;
35+
};
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+
while (tokens.length > 1) {
7+
for (let i = 0; i < tokens.length; i++) {
8+
if (["+", "-", "*", "/"].includes(tokens[i])) {
9+
const num1 = Number(tokens[i - 2]);
10+
const num2 = Number(tokens[i - 1]);
11+
const operator = tokens[i];
12+
let result;
13+
14+
switch (operator) {
15+
case "+":
16+
result = num1 + num2;
17+
break;
18+
case "-":
19+
result = num1 - num2;
20+
break;
21+
case "*":
22+
result = num1 * num2;
23+
break;
24+
case "/":
25+
result =
26+
num1 / num2 > 0
27+
? Math.floor(num1 / num2)
28+
: Math.ceil(num1 / num2);
29+
break;
30+
}
31+
32+
tokens.splice(i - 2, 3, result.toString());
33+
break;
34+
}
35+
}
36+
}
37+
return Number(tokens[0]);
38+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function (nums) {
6+
let n = nums.length;
7+
if (n === 0) return 0;
8+
if (n === 1) return nums[0];
9+
if (n === 2) return Math.max(nums[0], nums[1]);
10+
11+
let firstCase = [...nums];
12+
firstCase.pop();
13+
let first = robHelper(firstCase);
14+
15+
let secondCase = [...nums];
16+
secondCase.shift();
17+
let second = robHelper(secondCase);
18+
19+
return Math.max(first, second);
20+
};
21+
22+
function robHelper(houses) {
23+
let n = houses.length;
24+
let dp = new Array(n).fill(0);
25+
dp[0] = houses[0];
26+
dp[1] = Math.max(houses[0], houses[1]);
27+
28+
for (let i = 2; i < n; i++) {
29+
dp[i] = Math.max(dp[i - 1], dp[i - 2] + houses[i]);
30+
}
31+
return dp[n - 1];
32+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
const isSameTree = (tree1, tree2) => {
19+
if (!tree1 && !tree2) return true;
20+
if (!tree1 || !tree2) return false;
21+
if (tree1.val !== tree2.val) return false;
22+
return isSameTree(tree1.left, tree2.left) &&
23+
isSameTree(tree1.right, tree2.right);
24+
};
25+
26+
return isSameTree(root, subRoot) ||
27+
isSubtree(root.left, subRoot) ||
28+
isSubtree(root.right, subRoot);
29+
};

0 commit comments

Comments
 (0)