Skip to content

Commit 5b79511

Browse files
committed
Two Sum Solution
1 parent b73b77f commit 5b79511

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

β€Žtwo-sum/HoonDongKang.tsβ€Ž

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
* [Problem]: [001] Two Sum
3+
* (https://leetcode.com/problems/two-sum/description/)
4+
*/
5+
6+
function twoSum(nums: number[], target: number): number[] {
7+
// μ‹œκ°„ λ³΅μž‘λ„ O(n^2)
8+
// 곡간 λ³΅μž‘λ„ O(1)
9+
function doubleLoopFunc(num: number[], target: number): number[] {
10+
for (let i = 0; i < nums.length; i++) {
11+
for (let j = i + 1; j < nums.length; j++) {
12+
if (nums[i] + nums[j] === target) return [i, j];
13+
}
14+
}
15+
16+
return [];
17+
}
18+
19+
// μ‹œκ°„ λ³΅μž‘λ„ O(n)
20+
// 곡간 λ³΅μž‘λ„ O(n)
21+
function differenceMap(nums: number[], target: number): number[] {
22+
const diffMap = new Map<number, number>();
23+
24+
for (let [i, num] of nums.entries()) {
25+
const diff = target - num;
26+
if (diffMap.has(diff)) return [i, diffMap.get(diff)!];
27+
diffMap.set(num, i);
28+
}
29+
30+
return [];
31+
}
32+
33+
// μ‹œκ°„ λ³΅μž‘λ„ O(nlog n) - sort
34+
// 곡간 λ³΅μž‘λ„ O(1)
35+
// 정렬을 톡해 인덱슀 값을 μœ μ§€ν•  수 μ—†μ–΄μ„œ μ‹€νŒ¨
36+
// 인덱슀 값이 μ•„λ‹Œ λ°°μ—΄μ˜ μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜λŠ” λ¬Έμ œμ—μ„œλŠ” μ‚¬μš©μ΄ κ°€λŠ₯ν•  λ“―?
37+
function twoPointerFunc(nums: number[], target: number): number[] {
38+
nums.sort((a, b) => a - b);
39+
let leftPointer = 0;
40+
let rightPointer = nums.length - 1;
41+
42+
while (leftPointer < rightPointer) {
43+
const twoSum = nums[leftPointer] + nums[rightPointer];
44+
if (twoSum === target) return [leftPointer, rightPointer];
45+
46+
if (twoSum < target) leftPointer++;
47+
if (twoSum > target) rightPointer--;
48+
}
49+
50+
return [];
51+
}
52+
53+
return twoPointerFunc(nums, target);
54+
}
55+
56+
console.log(twoSum([2, 7, 11, 15], 9));

0 commit comments

Comments
Β (0)