Skip to content

Commit ebbff0e

Browse files
authored
Merge pull request #769 from Jeehay28/main
[Jeehay28] Week 03
2 parents 01a5fd8 + 84283ab commit ebbff0e

File tree

4 files changed

+162
-0
lines changed

4 files changed

+162
-0
lines changed

maximum-subarray/Jeehay28.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
6+
// Dynamic programming
7+
8+
9+
// Optimized Solution:
10+
// Time Complexity: O(n)
11+
// Space Complexity: O(1)
12+
13+
14+
var maxSubArray = function (nums) {
15+
16+
let currentMax = nums[0];
17+
let globalMax = nums[0]
18+
19+
for (let i = 1; i < nums.length; i++) {
20+
21+
currentMax = Math.max(currentMax + nums[i], nums[i]);
22+
globalMax = Math.max(currentMax, globalMax);
23+
24+
}
25+
26+
return globalMax;
27+
28+
};
29+
30+
31+
// Time Complexity: O(n)
32+
// Space Complexity: O(n)
33+
34+
// var maxSubArray = function (nums) {
35+
36+
// let dp = [nums[0]];
37+
38+
// for (let i = 1; i < nums.length; i++) {
39+
40+
// dp[i] = Math.max(dp[i - 1] + nums[i], nums[i])
41+
42+
// }
43+
44+
// return Math.max(...dp)
45+
46+
// };
47+
48+
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
6+
// Time Complexity: O(n)
7+
// Space Complexity: O(n)
8+
var productExceptSelf = function (nums) {
9+
10+
let result = [];
11+
12+
let left = Array(nums.length).fill(1)
13+
let right = Array(nums.length).fill(1)
14+
15+
for (let i = 1; i < nums.length; i++) {
16+
17+
left[i] = left[i - 1] * nums[i - 1];
18+
right[nums.length - 1 - i] = right[right.length - i] * nums[nums.length - i]
19+
20+
}
21+
22+
for (let i = 0; i < nums.length; i++) {
23+
result[i] = left[i] * right[i];
24+
}
25+
26+
return result;
27+
28+
29+
};
30+

reverse-bits/Jeehay28.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number} n - a positive integer
3+
* @return {number} - a positive integer
4+
*/
5+
6+
// Time Complexity: O(1)
7+
// Space Complexity: O(1)
8+
9+
var reverseBits = function (n) {
10+
11+
let stack = [];
12+
let num = n;
13+
14+
for (let i = 0; i < 32; i++) {
15+
16+
stack.push(num % 2);
17+
num = Math.floor(num / 2);
18+
}
19+
20+
stack = stack.reverse();
21+
22+
23+
let result = 0;
24+
25+
for (let i = 0; i < 32; i++) {
26+
27+
result += stack[i] * Math.pow(2, i);
28+
29+
}
30+
31+
return result;
32+
33+
};
34+
35+

two-sum/Jeehay28.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
7+
8+
// Time Complexity : O(n)
9+
// Space Complexity : O(n)
10+
11+
var twoSum = function (nums, target) {
12+
13+
let map = new Map();
14+
15+
for (let i = 0; i < nums.length; i++) {
16+
17+
const temp = target - nums[i];
18+
19+
if (map.has(temp)) {
20+
return [i, map.get(temp)]
21+
}
22+
23+
map.set(nums[i], i);
24+
}
25+
26+
return [];
27+
}
28+
29+
30+
// Time Complexity: O(n^2)
31+
// Space Complexity: O(1)
32+
// This solution is straightforward but inefficient for large arrays. For better performance, consider the hashmap approach.
33+
34+
// var twoSum = function (nums, target) {
35+
36+
// for (let i = 0; i < nums.length; i++) {
37+
38+
// const loc = nums.indexOf((target - nums[i]), i + 1);
39+
40+
// if (loc >= 0) {
41+
// return [i, loc]
42+
// } else {
43+
// continue;
44+
// }
45+
46+
// }
47+
48+
// };
49+

0 commit comments

Comments
 (0)