From 65c57e6dfe9baf82c6bee115ba5bc0cdf94021fb Mon Sep 17 00:00:00 2001 From: soobing Date: Fri, 4 Apr 2025 23:18:32 +0900 Subject: [PATCH 1/5] feat(soobing): two-sum --- two-sum/soobing.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 two-sum/soobing.ts diff --git a/two-sum/soobing.ts b/two-sum/soobing.ts new file mode 100644 index 000000000..dc909c1a1 --- /dev/null +++ b/two-sum/soobing.ts @@ -0,0 +1,27 @@ +// 1. Brute force +function twoSum(nums: number[], target: number): number[] { + for (let i = 0; i < nums.length - 1; i++) { + for (let j = i + 1; j < nums.length; j++) { + if (nums[i] + nums[j] === target) { + return [i, j]; + } + } + } + return []; +} + +// 2. Hashmap +function twoSum(nums: number[], target: number): number[] { + const map = new Map(); + for (let i = 0; i < nums.length; i++) { + map.set(nums[i], i); + } + + for (let i = 0; i < nums.length; i++) { + const targetIndex = map.get(target - nums[i]); + if (targetIndex && targetIndex !== i) { + return [i, targetIndex]; + } + } + return []; +} From 16009a3aa1943e7cca5af86d11988027b79e8dea Mon Sep 17 00:00:00 2001 From: soobing Date: Sat, 5 Apr 2025 16:47:34 +0900 Subject: [PATCH 2/5] feat(soobing): best-time-to-buy-and-sell-stock --- best-time-to-buy-and-sell-stock/soobing.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/soobing.ts diff --git a/best-time-to-buy-and-sell-stock/soobing.ts b/best-time-to-buy-and-sell-stock/soobing.ts new file mode 100644 index 000000000..b30c33976 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/soobing.ts @@ -0,0 +1,14 @@ +function maxProfit(prices: number[]): number { + let minPrice = Infinity; + let maxProfit = 0; + for (let i = 0; i < prices.length; i++) { + if (prices[i] < minPrice) { + minPrice = prices[i]; + } + + if (prices[i] - minPrice > maxProfit) { + maxProfit = prices[i] - minPrice; + } + } + return maxProfit; +} From 2d511d5330796d6651309f962c76170f8e0a7a9a Mon Sep 17 00:00:00 2001 From: soobing Date: Sat, 5 Apr 2025 17:03:27 +0900 Subject: [PATCH 3/5] feat(soobing): contains-duplicate --- contains-duplicate/soobing.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 contains-duplicate/soobing.ts diff --git a/contains-duplicate/soobing.ts b/contains-duplicate/soobing.ts new file mode 100644 index 000000000..a8ce40ac0 --- /dev/null +++ b/contains-duplicate/soobing.ts @@ -0,0 +1,10 @@ +function containsDuplicate(nums: number[]): boolean { + const map = new Map(); + for (let i = 0; i < nums.length; i++) { + if (map.get(nums[i])) { + return true; + } else map.set(nums[i], 1); + } + + return false; +} From 607512fb60cdefd81a1b059b3cf601f5c31f6967 Mon Sep 17 00:00:00 2001 From: soobing Date: Sat, 5 Apr 2025 18:00:17 +0900 Subject: [PATCH 4/5] feat(soobing): product-of-array-except-self --- product-of-array-except-self/soobing.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 product-of-array-except-self/soobing.ts diff --git a/product-of-array-except-self/soobing.ts b/product-of-array-except-self/soobing.ts new file mode 100644 index 000000000..c1caa1a85 --- /dev/null +++ b/product-of-array-except-self/soobing.ts @@ -0,0 +1,19 @@ +function productExceptSelf(nums: number[]): number[] { + const left = Array(nums.length).fill(1); + const right = Array(nums.length).fill(1); + const result = Array(nums.length); + + for (let i = 1; i < nums.length; i++) { + left[i] = left[i - 1] * nums[i - 1]; + } + + for (let i = nums.length - 2; i >= 0; i--) { + right[i] = right[i + 1] * nums[i + 1]; + } + + for (let i = 0; i < nums.length; i++) { + result[i] = left[i] * right[i]; + } + + return result; +} From fdf3120c343819a8ab100f9f9dfdcdaab02d188f Mon Sep 17 00:00:00 2001 From: soobing Date: Sat, 5 Apr 2025 22:35:37 +0900 Subject: [PATCH 5/5] feat(soobing): maximum-subarray --- maximum-subarray/soobing.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 maximum-subarray/soobing.ts diff --git a/maximum-subarray/soobing.ts b/maximum-subarray/soobing.ts new file mode 100644 index 000000000..5cd3d4be7 --- /dev/null +++ b/maximum-subarray/soobing.ts @@ -0,0 +1,9 @@ +function maxSubArray(nums: number[]): number { + let currentSum = nums[0]; + let maxSum = nums[0]; + for (let i = 1; i < nums.length; i++) { + currentSum = Math.max(nums[i], currentSum + nums[i]); + maxSum = Math.max(maxSum, currentSum); + } + return maxSum; +}