Skip to content

Commit a2b3164

Browse files
authored
Merge pull request #384 from HC-kang/main
[강희찬] WEEK 3 Solution
2 parents f0ba3e8 + 64bbd50 commit a2b3164

File tree

5 files changed

+76
-0
lines changed

5 files changed

+76
-0
lines changed

climbing-stairs/HC-kang.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// T.C. O(n)
2+
// S.C. O(1)
3+
function climbStairs(n: number): number {
4+
let p = 0;
5+
let q = 1;
6+
for (let i = 0; i < n; i++) {
7+
q = q + p;
8+
p = q - p;
9+
}
10+
return q;
11+
}

coin-change/HC-kang.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// T.C: O(coins.length * amount)
2+
// S.C: O(amount)
3+
function coinChange(coins: number[], amount: number): number {
4+
if (amount == 0) return 0;
5+
const dp = new Array(amount + 1).fill(Infinity);
6+
dp[0] = 0;
7+
for (let i = 1; i <= amount; i++) {
8+
for (let j = 0; j < coins.length; j++) {
9+
if (coins[j] <= i) {
10+
dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
11+
}
12+
}
13+
}
14+
return dp[amount] === Infinity ? -1 : dp[amount];
15+
};

combination-sum/HC-kang.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// T.C: O(n^t) // n: candidates.length, t: target
2+
// S.C: O(n)
3+
function combinationSum(candidates: number[], target: number): number[][] {
4+
const result: number[][] = [];
5+
function dfs(start: number, target: number, path: number[]) {
6+
if (target < 0) return;
7+
if (target === 0) {
8+
result.push([...path]);
9+
return;
10+
}
11+
for (let i = start; i < candidates.length; i++) {
12+
path.push(candidates[i]);
13+
dfs(i, target - candidates[i], path);
14+
path.pop();
15+
}
16+
}
17+
dfs(0, target, []);
18+
return result;
19+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// T.C: O(n)
2+
// S.C: O(n)
3+
function productExceptSelf(nums: number[]): number[] {
4+
const arr: number[] = new Array(nums.length);
5+
let product = 1;
6+
for (let i = 0; i < nums.length; i++) {
7+
arr[i] = product;
8+
product *= nums[i];
9+
}
10+
11+
product = 1;
12+
for (let i = nums.length - 1; i >= 0; i--) {
13+
arr[i] *= product;
14+
product *= nums[i];
15+
}
16+
17+
return arr;
18+
};

two-sum/HC-kang.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// T.C. O(n)
2+
// S.C. O(n)
3+
function twoSum(nums: number[], target: number): number[] {
4+
const sumMap = new Map<number, number>();
5+
for (const [i, num] of nums.entries()) {
6+
const diff = target - num;
7+
if (sumMap.has(diff)) {
8+
return [sumMap.get(diff)!, i];
9+
}
10+
sumMap.set(num, i);
11+
}
12+
return [];
13+
}

0 commit comments

Comments
 (0)