From 0366d407ef5fcb5c918e7a8fa21ec6b1777fa733 Mon Sep 17 00:00:00 2001 From: jeehay Date: Mon, 23 Dec 2024 22:14:21 +0900 Subject: [PATCH 1/7] Add two-sum solution --- two-sum/Jeehay28.js | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 two-sum/Jeehay28.js diff --git a/two-sum/Jeehay28.js b/two-sum/Jeehay28.js new file mode 100644 index 000000000..9b24e9073 --- /dev/null +++ b/two-sum/Jeehay28.js @@ -0,0 +1,49 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ + + +// Time Complexity : O(n) +// Space Complexity : O(n) + +var twoSum = function (nums, target) { + + let map = new Map(); + + for (let i = 0; i < nums.length; i++) { + + const temp = target - nums[i]; + + if (map.has(temp)) { + return [i, map.get(temp)] + } + + map.set(nums[i], i); + } + + return []; +} + + +// Time Complexity: O(n^2) +// Space Complexity: O(1) +// This solution is straightforward but inefficient for large arrays. For better performance, consider the hashmap approach. + +// var twoSum = function (nums, target) { + +// for (let i = 0; i < nums.length; i++) { + +// const loc = nums.indexOf((target - nums[i]), i + 1); + +// if (loc >= 0) { +// return [i, loc] +// } else { +// continue; +// } + +// } + +// }; + From d6f44bf3c4d4b0a0bf4bc4d85495d4d616bd3e77 Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 16:44:02 +0900 Subject: [PATCH 2/7] Add reverse-bits solution --- reverse-bits/Jeehay28.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 reverse-bits/Jeehay28.js diff --git a/reverse-bits/Jeehay28.js b/reverse-bits/Jeehay28.js new file mode 100644 index 000000000..e69de29bb From 2c308c794a363429285e30fe91919bb604542381 Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 17:43:44 +0900 Subject: [PATCH 3/7] Add reverse-bits solution --- reverse-bits/Jeehay28.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/reverse-bits/Jeehay28.js b/reverse-bits/Jeehay28.js index e69de29bb..dac5890e0 100644 --- a/reverse-bits/Jeehay28.js +++ b/reverse-bits/Jeehay28.js @@ -0,0 +1,33 @@ +/** + * @param {number} n - a positive integer + * @return {number} - a positive integer + */ + +// Time Complexity: O(1) +// Space Complexity: O(1) + +var reverseBits = function (n) { + + let stack = []; + let num = n; + + for (let i = 0; i < 32; i++) { + + stack.push(num % 2); + num = Math.floor(num / 2); + } + + stack = stack.reverse(); + + + let result = 0; + + for (let i = 0; i < 32; i++) { + + result += stack[i] * Math.pow(2, i); + + } + + return result; + +}; \ No newline at end of file From 40d6d563cb6521baa4cb5ce1f112c8bfb7123668 Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 17:45:13 +0900 Subject: [PATCH 4/7] Add reverse-bits solution --- reverse-bits/Jeehay28.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reverse-bits/Jeehay28.js b/reverse-bits/Jeehay28.js index dac5890e0..4e9330264 100644 --- a/reverse-bits/Jeehay28.js +++ b/reverse-bits/Jeehay28.js @@ -30,4 +30,6 @@ var reverseBits = function (n) { return result; -}; \ No newline at end of file +}; + + From 4fa6523e70cf80ed6de334342ee984458e771d2b Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 17:53:06 +0900 Subject: [PATCH 5/7] Add product-of-array-except-self solution --- product-of-array-except-self/Jeehay28.js | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 product-of-array-except-self/Jeehay28.js diff --git a/product-of-array-except-self/Jeehay28.js b/product-of-array-except-self/Jeehay28.js new file mode 100644 index 000000000..0672ca6d2 --- /dev/null +++ b/product-of-array-except-self/Jeehay28.js @@ -0,0 +1,30 @@ +/** + * @param {number[]} nums + * @return {number[]} + */ + +// Time Complexity: O(n) +// Space Complexity: O(n) +var productExceptSelf = function (nums) { + + let result = []; + + let left = Array(nums.length).fill(1) + let right = Array(nums.length).fill(1) + + for (let i = 1; i < nums.length; i++) { + + left[i] = left[i - 1] * nums[i - 1]; + right[nums.length - 1 - i] = right[right.length - i] * nums[nums.length - i] + + } + + for (let i = 0; i < nums.length; i++) { + result[i] = left[i] * right[i]; + } + + return result; + + +}; + From 54d1bcffb4eeb67b0332686e95048fd721ee4762 Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 22:06:04 +0900 Subject: [PATCH 6/7] Add maximum-subarray solution --- maximum-subarray/Jeehay28.js | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 maximum-subarray/Jeehay28.js diff --git a/maximum-subarray/Jeehay28.js b/maximum-subarray/Jeehay28.js new file mode 100644 index 000000000..dac016dcc --- /dev/null +++ b/maximum-subarray/Jeehay28.js @@ -0,0 +1,46 @@ +/** + * @param {number[]} nums + * @return {number} + */ + +// Dynamic programming + + +// Optimized Solution: +// Time Complexity: O(n) +// Space Complexity: O(1) + + +var maxSubArray = function (nums) { + + let currentMax = nums[0]; + let globalMax = nums[0] + + for (let i = 1; i < nums.length; i++) { + + currentMax = Math.max(currentMax + nums[i], nums[i]); + globalMax = Math.max(currentMax, globalMax); + + } + + return globalMax; + +}; + + +// Time Complexity: O(n) +// Space Complexity: O(n) + +// var maxSubArray = function (nums) { + +// let dp = [nums[0]]; + +// for (let i = 1; i < nums.length; i++) { + +// dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]) + +// } + +// return Math.max(...dp) + +// }; \ No newline at end of file From 84283abfac54e8583b849646058da16bcfb82f61 Mon Sep 17 00:00:00 2001 From: jeehay Date: Sat, 28 Dec 2024 22:09:32 +0900 Subject: [PATCH 7/7] Add a newline at the end of the code --- maximum-subarray/Jeehay28.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maximum-subarray/Jeehay28.js b/maximum-subarray/Jeehay28.js index dac016dcc..a2ec53675 100644 --- a/maximum-subarray/Jeehay28.js +++ b/maximum-subarray/Jeehay28.js @@ -43,4 +43,6 @@ var maxSubArray = function (nums) { // return Math.max(...dp) -// }; \ No newline at end of file +// }; + +