Skip to content

Commit ca1839f

Browse files
authored
Merge pull request #791 from gwbaik9717/main
2 parents e09f615 + b3cd465 commit ca1839f

File tree

5 files changed

+128
-0
lines changed

5 files changed

+128
-0
lines changed

combination-sum/gwbaik9717.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @param {number[]} candidates
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var combinationSum = function (candidates, target) {
7+
const answer = [];
8+
const n = candidates.length;
9+
const combi = (i, sum, arr) => {
10+
for (let j = i; j < n; j++) {
11+
const candidate = candidates[j];
12+
const newSum = sum + candidate;
13+
14+
if (newSum === target) {
15+
answer.push([...arr, candidate]);
16+
continue;
17+
}
18+
19+
if (newSum > target) {
20+
continue;
21+
}
22+
23+
if (newSum < target) {
24+
combi(j, newSum, [...arr, candidate]);
25+
}
26+
}
27+
};
28+
29+
combi(0, 0, []);
30+
31+
return answer;
32+
};

maximum-subarray/gwbaik9717.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(1)
3+
4+
/**
5+
* @param {number[]} nums
6+
* @return {number}
7+
*/
8+
var maxSubArray = function (nums) {
9+
const n = nums.length;
10+
const dp = [0, 0];
11+
12+
let answer = Number.MIN_SAFE_INTEGER;
13+
14+
for (let i = 1; i <= n; i++) {
15+
if (i % 2 !== 0) {
16+
dp[1] = Math.max(dp[0] + nums[i - 1], nums[i - 1]);
17+
answer = Math.max(answer, dp[1]);
18+
} else {
19+
dp[0] = Math.max(dp[1] + nums[i - 1], nums[i - 1]);
20+
answer = Math.max(answer, dp[0]);
21+
}
22+
}
23+
24+
return answer;
25+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(n)
3+
4+
/**
5+
* @param {number[]} nums
6+
* @return {number[]}
7+
*/
8+
var productExceptSelf = function (nums) {
9+
const n = nums.length;
10+
const fromLeft = Array.from({ length: n + 1 }, () => 1);
11+
const fromRight = Array.from({ length: n + 1 }, () => 1);
12+
13+
for (let i = 1; i <= n; i++) {
14+
fromLeft[i] = fromLeft[i - 1] * nums[i - 1];
15+
}
16+
17+
for (let i = n - 1; i >= 0; i--) {
18+
fromRight[i] = fromRight[i + 1] * nums[i];
19+
}
20+
21+
return nums.map((num, i) => {
22+
return fromLeft[i] * fromRight[i + 1];
23+
});
24+
};

reverse-bits/gwbaik9717.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Time complexity: O(1)
2+
// Space complexity: O(1)
3+
4+
/**
5+
* @param {number} n - a positive integer
6+
* @return {number} - a positive integer
7+
*/
8+
var reverseBits = function (n) {
9+
const stack = [];
10+
let current = n;
11+
12+
for (let i = 0; i < 32; i++) {
13+
stack.push(current % 2);
14+
current = Math.floor(current / 2);
15+
}
16+
17+
let answer = 0;
18+
19+
for (let i = 0; i < 32; i++) {
20+
const popped = stack.pop();
21+
answer += popped * 2 ** i;
22+
}
23+
24+
return answer;
25+
};

two-sum/gwbaik9717.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(n)
3+
4+
/**
5+
* @param {number[]} nums
6+
* @param {number} target
7+
* @return {number[]}
8+
*/
9+
var twoSum = function (nums, target) {
10+
const map = new Map();
11+
12+
for (let i = 0; i < nums.length; i++) {
13+
const num = nums[i];
14+
const diff = target - num;
15+
16+
if (map.has(diff)) {
17+
return [i, map.get(diff)];
18+
} else {
19+
map.set(num, i);
20+
}
21+
}
22+
};

0 commit comments

Comments
 (0)