Skip to content

Commit 9c77d19

Browse files
authored
Merge pull request #2397 from DaleStudy/jiji-hoon96/week2
[jiji-hoon96] WEEK 02 solutions
2 parents 15ae35a + 0e719c6 commit 9c77d19

5 files changed

Lines changed: 161 additions & 0 deletions

File tree

3sum/jiji-hoon96.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// time limit 실패
2+
3+
// function threeSum(nums: number[]): number[][] {
4+
// const result: number[][] = [];
5+
// for (let i = 0; i < nums.length; i++) {
6+
// for (let j = 1; j < nums.length; j++) {
7+
// for (let k = 2; k < nums.length; k++) {
8+
// if (
9+
// i !== j &&
10+
// j !== k &&
11+
// i !== k &&
12+
// nums[i] + nums[j] + nums[k] === 0
13+
// ) {
14+
// const hasArray = result.some(
15+
// (item) =>
16+
// JSON.stringify([...item].sort((a, b) => a - b)) ===
17+
// JSON.stringify([nums[i], nums[j], nums[k]].sort((a, b) => a - b)),
18+
// );
19+
// if (!hasArray) {
20+
// result.push([nums[i], nums[j], nums[k]]);
21+
// }
22+
// }
23+
// }
24+
// }
25+
// }
26+
// return result;
27+
// }
28+
29+
function threeSum(nums: number[]): number[][] {
30+
const result: number[][] = [];
31+
nums.sort((a, b) => a - b);
32+
33+
for (let i = 0; i < nums.length - 2; i++) {
34+
if (i > 0 && nums[i] === nums[i - 1]) continue;
35+
36+
let left = i + 1;
37+
let right = nums.length - 1;
38+
39+
while (left < right) {
40+
const sum = nums[i] + nums[left] + nums[right];
41+
42+
if (sum === 0) {
43+
result.push([nums[i], nums[left], nums[right]]);
44+
while (left < right && nums[left] === nums[left + 1]) left++;
45+
while (left < right && nums[right] === nums[right - 1]) right--;
46+
left++;
47+
right--;
48+
} else if (sum < 0) {
49+
left++;
50+
} else {
51+
right--;
52+
}
53+
}
54+
}
55+
return result;
56+
}
57+
58+
threeSum([-1, 0, 1, 2, -1, -4]); // [[-1,-1,2],[-1,0,1]]
59+
threeSum([0, 1, 1]); // []
60+
threeSum([0, 0, 0]); // [[0,0,0]]
61+
threeSum([
62+
12, 5, -12, 4, -11, 11, 2, 7, 2, -5, -14, -3, -3, 3, 2, -10, 9, -15, 2, 14,
63+
-3, -15, -3, -14, -1, -7, 11, -4, -11, 12, -15, -14, 2, 10, -2, -1, 6, 7, 13,
64+
-15, -13, 6, -10, -9, -14, 7, -12, 3, -1, 5, 2, 11, 6, 14, 12, -10, 14, 0, -7,
65+
11, -10, -7, 4, -1, -12, -13, 13, 1, 9, 3, 1, 3, -5, 6, 9, -4, -2, 5, 14, 12,
66+
-5, -6, 1, 8, -15, -10, 5, -15, -2, 5, 3, 3, 13, -8, -13, 8, -5, 8, -6, 11,
67+
-12, 3, 0, -2, -6, -14, 2, 0, 6, 1, -11, 9, 2, -3, -6, 3, 3, -15, -5, -14, 5,
68+
13, -4, -4, -10, -10, 11,
69+
]); // [[-15,1,14],[-15,2,13],[-15,3,12],[-15,4,11],[-15,5,10],[-15,6,9],[-15,7,8],[-14,0,14],[-14,1,13],[-14,2,12],[-14,3,11],[-14,4,10],[-14,5,9],[-14,6,8],[-14,7,7],[-13,-1,14],[-13,0,13],[-13,1,12],[-13,2,11],[-13,3,10],[-13,4,9],[-13,5,8],[-13,6,7],[-12,-2,14],[-12,-1,13],[-12,0,12],[-12,1,11],[-12,2,10],[-12,3,9],[-12,4,8],[-12,5,7],[-12,6,6],[-11,-3,14],[-11,-2,13],[-11,-1,12],[-11,0,11],[-11,1,10],[-11,2,9],[-11,3,8],[-11,4,7],[-11,5,6],[-10,-4,14],[-10,-3,13],[-10,-2,12],[-10,-1,11],[-10,0,10],[-10,1,9],[-10,2,8],[-10,3,7],[-10,4,6],[-10,5,5],[-9,-5,14],[-9,-4,13],[-9,-3,12],[-9,-2,11],[-9,-1,10],[-9,0,9],[-9,1,8],[-9,2,7],[-9,3,6],[-9,4,5],[-8,-6,14],[-8,-5,13],[-8,-4,12],[-8,-3,11],[-8,-2,10],[-8,-1,9],[-8,0,8],[-8,1,7],[-8,2,6],[-8,3,5],[-8,4,4],[-7,-7,14],[-7,-6,13],[-7,-5,12],[-7,-4,11],[-7,-3,10],[-7,-2,9],[-7,-1,8],[-7,0,7],[-7,1,6],[-7,2,5],[-7,3,4],[-6,-6,12],[-6,-5,11],[-6,-4,10],[-6,-3,9],[-6,-2,8],[-6,-1,7],[-6,0,6],[-6,1,5],[-6,2,4],[-6,3,3],[-5,-5,10],[-5,-4,9],[-5,-3,8...

climbing-stairs/jiji-hoon96.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function climbStairs(n: number): number {
2+
if (n <= 2) return n;
3+
4+
let dp1 = 1;
5+
let dp2 = 2;
6+
7+
for (let i = 3; i <= n; i++) {
8+
let sum = dp1 + dp2;
9+
dp1 = dp2;
10+
dp2 = sum;
11+
}
12+
13+
return dp2;
14+
}
15+
16+
climbStairs(2); // 2
17+
climbStairs(3); // 3
18+
climbStairs(24); // 75025
19+
climbStairs(45); // 1836311903
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function productExceptSelf(nums: number[]): number[] {
2+
const result = new Array(nums.length).fill(1);
3+
let prefix = 1;
4+
let suffix = 1;
5+
6+
for (let i = 0; i < nums.length; i++) {
7+
result[i] = prefix;
8+
prefix *= nums[i];
9+
}
10+
11+
for (let j = nums.length - 1; j >= 0; j--) {
12+
result[j] *= suffix;
13+
suffix *= nums[j];
14+
}
15+
16+
return result;
17+
}
18+
19+
productExceptSelf([1, 2, 3, 4]); // [24,12,8,6]
20+
productExceptSelf([-1, 1, 0, -3, 3]); // [0,0,9,0,0]

valid-anagram/jiji-hoon96.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function isAnagram(s: string, t: string): boolean {
2+
if (s.length !== t.length) return false;
3+
4+
const list: Record<string, number> = {};
5+
for (const key of s) {
6+
list[key] = (list[key] ?? 0) + 1;
7+
}
8+
9+
for (const key of t) {
10+
if (key in list) {
11+
list[key] -= 1;
12+
}
13+
}
14+
15+
for (const value in list) {
16+
if (list[value] > 0) {
17+
return false;
18+
}
19+
}
20+
21+
return true;
22+
}
23+
24+
isAnagram("anagram", "nagaram"); // true
25+
isAnagram("rat", "car"); // false
26+
isAnagram("a", "ab"); // false
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class TreeNode {
2+
val: number;
3+
left: TreeNode | null;
4+
right: TreeNode | null;
5+
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
6+
this.val = val === undefined ? 0 : val;
7+
this.left = left === undefined ? null : left;
8+
this.right = right === undefined ? null : right;
9+
}
10+
}
11+
12+
function isValidBST(root: TreeNode | null): boolean {
13+
function dfs(node: TreeNode | null, min: number, max: number) {
14+
if (node === null) return true;
15+
16+
if (node.val <= min || node.val >= max) {
17+
return false;
18+
}
19+
20+
return dfs(node.left, min, node.val) && dfs(node.right, node.val, max);
21+
}
22+
23+
return dfs(root, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY);
24+
}
25+
26+
isValidBST([2, 1, 3]); // true
27+
isValidBST([5, 1, 4, null, null, 3, 6]); // false

0 commit comments

Comments
 (0)