Skip to content

Commit 1d2501f

Browse files
committed
two-sum
1 parent c4c996e commit 1d2501f

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

β€Žtwo-sum/JANGSEYEONG.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// μ‹œκ°„λ³΅μž‘λ„ O(nΒ²)
2+
// - nums.indexOf()λŠ” λ°°μ—΄ 전체λ₯Ό μˆœνšŒν•˜λŠ” O(n) μž‘μ—…
3+
// - 이 μž‘μ—…μ΄ for 루프(O(n)) λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ 전체 μ‹œκ°„λ³΅μž‘λ„λŠ” O(n) * O(n) = O(nΒ²)
4+
/*var twoSum = function (nums, target) {
5+
for (let i = 0; i < nums.length; i++) {
6+
let x = nums.indexOf(target - nums[i]);
7+
if (x > -1 && x !== i) {
8+
return [i, x];
9+
}
10+
}
11+
return [];
12+
};*/
13+
14+
// μ‹œκ°„λ³΅μž‘λ„ O(n)
15+
// 전체 배열을 ν•œ 번만 순회 O(n) + ν‚€-κ°’ 쌍 μ €μž₯에 O(1)
16+
// Map λŒ€μ‹  객체(Object)λ₯Ό μ‚¬μš©ν•΄λ„ 될듯 함
17+
// => 일반 κ°μ²΄λŠ” {}, 접근은 obj[key]둜 κ°€λŠ₯, has() λŒ€μ‹  (key in obj) λ˜λŠ” obj[key] !== undefined μ‚¬μš© κ°€λŠ₯
18+
var twoSum = function (nums, target) {
19+
let minus = new Map();
20+
for (let i = 0; i < nums.length; i++) {
21+
let current = nums[i];
22+
23+
// ν˜„μž¬ μˆ«μžκ°€ 이전에 μ €μž₯된 보수(complement)와 μΌμΉ˜ν•˜λŠ”μ§€ 확인 - Map 객체의 hasλŠ” O(1) μ—°μ‚°
24+
if (minus.has(current)) {
25+
return [minus.get(current), i];
26+
}
27+
28+
// ν˜„μž¬ 숫자의 보수(target-current)와 인덱슀λ₯Ό 맡에 μ €μž₯ - Map 객체의 set은 O(1) μ—°μ‚°
29+
minus.set(target - current, i);
30+
}
31+
32+
return [];
33+
};

0 commit comments

Comments
Β (0)