From c5573251c1970bd4c27f832fcf237e72896133a2 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 26 Aug 2024 18:25:25 +0900 Subject: [PATCH 1/7] feat: 1. Two Sum --- two-sum/HC-kang.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 two-sum/HC-kang.ts diff --git a/two-sum/HC-kang.ts b/two-sum/HC-kang.ts new file mode 100644 index 000000000..85bf00f0b --- /dev/null +++ b/two-sum/HC-kang.ts @@ -0,0 +1,13 @@ +// T.C. O(n) +// S.C. O(n) +function twoSum(nums: number[], target: number): number[] { + const sumMap = new Map(); + for (const [i, num] of nums.entries()) { + const diff = target - num; + if (sumMap.has(diff)) { + return [sumMap.get(diff)!, i]; + } + sumMap.set(num, i); + } + return []; +} From 0c58a2c6e7e15d7f9cc1b65b431d009ddb9ddadf Mon Sep 17 00:00:00 2001 From: HC-kang Date: Tue, 27 Aug 2024 08:22:34 +0900 Subject: [PATCH 2/7] feat: 70. Climbing Stairs --- climbing-stairs/HC-kang.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 climbing-stairs/HC-kang.ts diff --git a/climbing-stairs/HC-kang.ts b/climbing-stairs/HC-kang.ts new file mode 100644 index 000000000..b615c0da5 --- /dev/null +++ b/climbing-stairs/HC-kang.ts @@ -0,0 +1,13 @@ +// T.C. O(n) +// S.C. O(1) +function climbStairs(n: number): number { + let p = 0; + let q = 1; + let t: number; + for (let i = 0; i < n; i++) { + t = p + q; + p = q; + q = t; + } + return q; +} From 7e66c5416fdb98205ee126bdc5de874a1851cc7b Mon Sep 17 00:00:00 2001 From: HC-kang Date: Tue, 27 Aug 2024 08:29:55 +0900 Subject: [PATCH 3/7] simplify: 70. Climbing Stairs --- climbing-stairs/HC-kang.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/climbing-stairs/HC-kang.ts b/climbing-stairs/HC-kang.ts index b615c0da5..6813e15fa 100644 --- a/climbing-stairs/HC-kang.ts +++ b/climbing-stairs/HC-kang.ts @@ -3,11 +3,9 @@ function climbStairs(n: number): number { let p = 0; let q = 1; - let t: number; for (let i = 0; i < n; i++) { - t = p + q; - p = q; - q = t; + q = q + p; + p = q - p; } return q; } From f84dc879c703302af319669859de3ec73bf4cd54 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 28 Aug 2024 07:36:52 +0900 Subject: [PATCH 4/7] feat: 238. Product of Array Except Self --- product-of-array-except-self/HC-kang.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 product-of-array-except-self/HC-kang.ts diff --git a/product-of-array-except-self/HC-kang.ts b/product-of-array-except-self/HC-kang.ts new file mode 100644 index 000000000..9ed19d73a --- /dev/null +++ b/product-of-array-except-self/HC-kang.ts @@ -0,0 +1,18 @@ +// T.C: O(n) +// S.C: O(n) +function productExceptSelf(nums: number[]): number[] { + const arr: number[] = new Array(nums.length); + let product = 1; + for (let i = 0; i < nums.length; i++) { + arr[i] = product; + product *= nums[i]; + } + + product = 1; + for (let i = nums.length - 1; i >= 0; i--) { + arr[i] *= product; + product *= nums[i]; + } + + return arr; +}; From 414efbc386d11320006cbe1f609b0044f215e480 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 28 Aug 2024 08:01:05 +0900 Subject: [PATCH 5/7] feat: 322. Coin Change --- coin-change/HC-kang.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 coin-change/HC-kang.ts diff --git a/coin-change/HC-kang.ts b/coin-change/HC-kang.ts new file mode 100644 index 000000000..34e5ed216 --- /dev/null +++ b/coin-change/HC-kang.ts @@ -0,0 +1,15 @@ +// T.C: O(coins.length * amount) +// S.C: O(amount) +function coinChange(coins: number[], amount: number): number { + if (amount == 0) return 0; + const dp = new Array(amount + 1).fill(Infinity); + dp[0] = 0; + for (let i = 1; i <= amount; i++) { + for (let j = 0; j < coins.length; j++) { + if (coins[j] <= i) { + dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1); + } + } + } + return dp[amount] === Infinity ? -1 : dp[amount]; +}; From 9c0d2b12ee708fc6170eeb850b0546a78e113eda Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 28 Aug 2024 08:15:43 +0900 Subject: [PATCH 6/7] feat: 39. Combination Sum --- combination-sum/HC-kang.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 combination-sum/HC-kang.ts diff --git a/combination-sum/HC-kang.ts b/combination-sum/HC-kang.ts new file mode 100644 index 000000000..eba6134cf --- /dev/null +++ b/combination-sum/HC-kang.ts @@ -0,0 +1,19 @@ +// T.C: O(2^n) +// S.C: O(n) +function combinationSum(candidates: number[], target: number): number[][] { + const result: number[][] = []; + function dfs(start: number, target: number, path: number[]) { + if (target < 0) return; + if (target === 0) { + result.push([...path]); + return; + } + for (let i = start; i < candidates.length; i++) { + path.push(candidates[i]); + dfs(i, target - candidates[i], path); + path.pop(); + } + } + dfs(0, target, []); + return result; +}; From aa71427be073e0cb71169837d776bea7654cc16e Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 28 Aug 2024 08:15:43 +0900 Subject: [PATCH 7/7] docs: update 39. Combination Sum --- combination-sum/HC-kang.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 combination-sum/HC-kang.ts diff --git a/combination-sum/HC-kang.ts b/combination-sum/HC-kang.ts new file mode 100644 index 000000000..f631923ea --- /dev/null +++ b/combination-sum/HC-kang.ts @@ -0,0 +1,19 @@ +// T.C: O(n^t) // n: candidates.length, t: target +// S.C: O(n) +function combinationSum(candidates: number[], target: number): number[][] { + const result: number[][] = []; + function dfs(start: number, target: number, path: number[]) { + if (target < 0) return; + if (target === 0) { + result.push([...path]); + return; + } + for (let i = start; i < candidates.length; i++) { + path.push(candidates[i]); + dfs(i, target - candidates[i], path); + path.pop(); + } + } + dfs(0, target, []); + return result; +};