Skip to content

Commit 513430b

Browse files
authored
Merge pull request #383 from tolluset/main
[이병현] Week 3
2 parents a2b3164 + 43f4a6d commit 513430b

File tree

5 files changed

+106
-0
lines changed

5 files changed

+106
-0
lines changed

climbing-stairs/tolluset.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* TC: O(n)
3+
* SC: O(n)
4+
* */
5+
function climbStairs(n: number): number {
6+
const dp = new Array(n + 1).fill(0);
7+
8+
dp[1] = 1;
9+
dp[2] = 2;
10+
11+
for (let i = 3; i <= n; i++) {
12+
dp[i] = dp[i - 1] + dp[i - 2];
13+
}
14+
15+
return dp[n];
16+
}

coin-change/tolluset.ts

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

combination-sum/tolluset.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* TC: O(candidates.length ^ target / min(candidates))
3+
* SC: O(target / min(candidates)
4+
*/
5+
function combinationSum(candidates: number[], target: number): number[][] {
6+
const result: number[][] = [];
7+
const dfs = (start: number, stop: number, path: number[]) => {
8+
if (stop === 0) {
9+
result.push([...path]);
10+
return;
11+
}
12+
13+
for (let i = start; i < candidates.length; i++) {
14+
if (candidates[i] <= stop) {
15+
path.push(candidates[i]);
16+
dfs(i, stop - candidates[i], path);
17+
path.pop();
18+
}
19+
}
20+
};
21+
dfs(0, target, []);
22+
23+
return result;
24+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* TC: O(n)
3+
* SC: O(n)
4+
* */
5+
6+
function productExceptSelf(nums: number[]): number[] {
7+
const n = nums.length;
8+
const answer = new Array(n).fill(1);
9+
10+
let left = 1;
11+
nums.forEach((num, i) => {
12+
answer[i] = left;
13+
left *= num;
14+
});
15+
16+
let right = 1;
17+
nums.reverse().forEach((num, i) => {
18+
answer[n - 1 - i] *= right;
19+
right *= num;
20+
});
21+
22+
return answer;
23+
}

two-sum/tolluset.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* TC: O(n)
3+
* SC: O(n)
4+
* */
5+
function twoSum(nums: number[], target: number): number[] {
6+
const n = nums.length;
7+
const answer = new Map<number, number>();
8+
9+
for (let i = 0; i < n; i++) {
10+
const diff = target - nums[i];
11+
const before = answer.get(diff);
12+
13+
if (before) {
14+
return [before, i];
15+
}
16+
17+
answer.set(nums[i], i);
18+
}
19+
20+
return [];
21+
}

0 commit comments

Comments
 (0)