Skip to content

Commit 9d82e92

Browse files
authored
Merge pull request #2067 from JangAyeon/main
[JangAyeon] WEEK 02 Solutions
2 parents c1be3fb + f322c64 commit 9d82e92

File tree

5 files changed

+133
-0
lines changed

5 files changed

+133
-0
lines changed

3sum/JangAyeon.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
var threeSum = function (nums) {
2+
let res = [];
3+
nums.sort((a, b) => a - b);
4+
5+
for (let i = 0; i < nums.length; i++) {
6+
if (i > 0 && nums[i] === nums[i - 1]) {
7+
continue;
8+
}
9+
10+
let j = i + 1;
11+
let k = nums.length - 1;
12+
13+
while (j < k) {
14+
let total = nums[i] + nums[j] + nums[k];
15+
16+
if (total > 0) {
17+
k--;
18+
} else if (total < 0) {
19+
j++;
20+
} else {
21+
res.push([nums[i], nums[j], nums[k]]);
22+
j++;
23+
24+
while (nums[j] === nums[j - 1] && j < k) {
25+
j++;
26+
}
27+
}
28+
}
29+
}
30+
return res;
31+
};

climbing-stairs/JangAyeon.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var climbStairs = function (n) {
6+
const dp = [0, 1, 2];
7+
for (let i = 3; i <= n; i++) {
8+
const value = dp[i - 2] + dp[i - 1];
9+
dp.push(value);
10+
// console.log(i, value)
11+
}
12+
13+
return dp[n];
14+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var productExceptSelf = function (nums) {
6+
let answer = [];
7+
8+
const p = [];
9+
for (let i = 0; i < nums.length; i++) {
10+
if (i == 0) {
11+
const n = nums.slice(i + 1).reduce((acc, curr) => (acc *= curr), 1);
12+
console.log(n);
13+
p.push([1, n]);
14+
answer.push(1 * n);
15+
} else {
16+
const [left, right] = p[i - 1];
17+
if (nums[i] === 0) {
18+
const n = nums.slice(i + 1).reduce((acc, curr) => (acc *= curr), 1);
19+
p.push([left * nums[i - 1], n]);
20+
answer.push(left * nums[i - 1] * n);
21+
} else {
22+
p.push([left * nums[i - 1], right / nums[i]]);
23+
answer.push((left * nums[i - 1] * right) / nums[i]);
24+
}
25+
}
26+
}
27+
28+
return answer;
29+
};

valid-anagram/JangAyeon.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*/
6+
var isAnagram = function (s, t) {
7+
const sCounter = new Map();
8+
for (let e of s) {
9+
// console.log(e)
10+
const value = sCounter.has(e) ? sCounter.get(e) + 1 : 1;
11+
sCounter.set(e, value);
12+
}
13+
console.log(sCounter);
14+
15+
for (let e of t) {
16+
if (!sCounter.has(e)) {
17+
return false;
18+
}
19+
const value = sCounter.get(e);
20+
if (value - 1 < 0) {
21+
return false;
22+
}
23+
if (value - 1 == 0) {
24+
sCounter.delete(e);
25+
} else {
26+
sCounter.set(e, value - 1);
27+
}
28+
}
29+
const notAllused = [...sCounter.keys()].length;
30+
return !notAllused;
31+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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 {boolean}
12+
*/
13+
const dfs = (node, left, right) => {
14+
if (!node) {
15+
return true;
16+
}
17+
18+
return (
19+
node.val > left &&
20+
node.val < right &&
21+
dfs(node.left, left, node.val) &&
22+
dfs(node.right, node.val, right)
23+
);
24+
};
25+
26+
const isValidBST = function (root) {
27+
return dfs(root, -Infinity, Infinity);
28+
};

0 commit comments

Comments
 (0)