Skip to content

Commit 2927ba5

Browse files
committed
feat: week 02-03 풀이 추가 (climbing-stairs, house-robber, product-of-array-except-self, valid-palindrome, number-of-1-bits)
1 parent 406ef4c commit 2927ba5

5 files changed

Lines changed: 82 additions & 0 deletions

File tree

climbing-stairs/01-binary.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
6+
var climbStairs = function (n) {
7+
if (n === 1) return 1;
8+
if (n === 2) return 2;
9+
const arr = [0, 1, 2];
10+
let i = 3;
11+
while (i <= n) {
12+
const temp = arr[i - 1] + arr[i - 2];
13+
arr.push(temp);
14+
i++;
15+
}
16+
17+
return arr[n];
18+
};

house-robber/01-binary.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function (nums) {
6+
const memo = new Map();
7+
return dfs(nums, 0, memo);
8+
};
9+
10+
const dfs = (nums, i, memo) => {
11+
if (i >= nums.length) return 0;
12+
if (memo.has(i)) return memo.get(i);
13+
const result = Math.max(
14+
nums[i] + dfs(nums, i + 2, memo),
15+
dfs(nums, i + 1, memo),
16+
);
17+
memo.set(i, result);
18+
return result;
19+
};

number-of-1-bits/01-binary.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var hammingWeight = function (n) {
6+
let cnt = 1;
7+
while (n >= 2) {
8+
const r = n % 2;
9+
n = Math.floor(n / 2);
10+
if (r === 1) cnt++;
11+
}
12+
return cnt;
13+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var productExceptSelf = function (nums) {
6+
const r = Array.from(nums.length);
7+
const l = Array.from(nums.length);
8+
const a = Array.from(nums.length);
9+
for (let i = 0; i < nums.length; i++) {
10+
const temp = r[i - 1] ?? 1;
11+
const temp2 = nums[i - 1] ?? 1;
12+
r[i] = temp * temp2;
13+
}
14+
for (let i = nums.length - 1; i > -1; i--) {
15+
const temp = l[i + 1] ?? 1;
16+
const temp2 = nums[i + 1] ?? 1;
17+
l[i] = temp * temp2;
18+
}
19+
for (let i = 0; i < nums.length; i++) {
20+
a[i] = l[i] * r[i];
21+
}
22+
23+
return a;
24+
};

valid-palindrome/01-binary.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function (s) {
6+
const result = s.toLowerCase().replace(/[^a-z0-9]/g, '');
7+
return result === result.split('').reverse().join('');
8+
};

0 commit comments

Comments
 (0)