Skip to content

Commit e9336ed

Browse files
authored
week3 solutions (#2735)
1 parent 5005c96 commit e9336ed

5 files changed

Lines changed: 47 additions & 0 deletions

File tree

combination-sum/jthw1005.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function combinationSum(candidates, target) {
2+
const dp = Array.from({ length: target + 1 }, () => []);
3+
dp[0] = [[]];
4+
for (let i = 0; i < candidates.length; i++) {
5+
for (let j = candidates[i]; j <= target; j++) {
6+
dp[j].push(
7+
...dp[j - candidates[i]].map((item) => [...item, candidates[i]]),
8+
);
9+
}
10+
}
11+
return dp[target];
12+
}

decode-ways/jthw1005.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function numDecodings(s) {
2+
const dp = Array.from({ length: s.length + 1 }, () => 0);
3+
dp[0] = 1;
4+
dp[1] = s[0] === '0' ? 0 : 1;
5+
for (let i = 2; i <= s.length; i++) {
6+
if (s[i - 1] !== '0') {
7+
dp[i] += dp[i - 1];
8+
}
9+
10+
const twoDigits = Number(s.slice(i - 2, i));
11+
if (twoDigits >= 10 && twoDigits <= 26) {
12+
dp[i] += dp[i - 2];
13+
}
14+
}
15+
return dp[s.length];
16+
}

maximum-subarray/jthw1005.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function maxSubArray(nums) {
2+
let max = nums[0];
3+
let current = nums[0];
4+
for (let i = 1; i < nums.length; i++) {
5+
current = Math.max(nums[i], current + nums[i]);
6+
max = Math.max(max, current);
7+
}
8+
return max;
9+
}

number-of-1-bits/jthw1005.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function hammingWeight(n) {
2+
return n
3+
.toString(2)
4+
.split('')
5+
.filter((v) => v === '1').length;
6+
}

valid-palindrome/jthw1005.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function isPalindrome(s) {
2+
const letters = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
3+
return letters === letters.split('').reverse().join('');
4+
}

0 commit comments

Comments
 (0)