Skip to content

Commit 92c6959

Browse files
committed
풀이1: 3Sum #241
1 parent 0383e00 commit 92c6959

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

3sum/seungseung88.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
*
3+
* 시간 복잡도: O(n log n) + O(n^2) => O(n^2)
4+
* 공간 복잡도: O(1)
5+
* - 자바스크립트 배열은 원래의 배열 자체를 바꿈
6+
*/
7+
const threeSum = (numbers) => {
8+
let result = [];
9+
numbers.sort((a, b) => a - b);
10+
11+
for (let i = 0; i < numbers.length; i += 1) {
12+
if (i > 0 && numbers[i] === numbers[i - 1]) continue;
13+
14+
let l = i + 1;
15+
let r = numbers.length - 1;
16+
17+
while (l < r) {
18+
const threeSum = numbers[i] + numbers[l] + numbers[r];
19+
20+
if (threeSum > 0) {
21+
r -= 1;
22+
} else if (threeSum < 0) {
23+
l += 1;
24+
} else {
25+
result.push([numbers[i], numbers[l], numbers[r]]);
26+
while (l < r && numbers[l] === numbers[l + 1]) l += 1;
27+
while (l < r && numbers[r] === numbers[r - 1]) r -= 1;
28+
l += 1;
29+
r -= 1;
30+
}
31+
}
32+
}
33+
34+
return result;
35+
};

0 commit comments

Comments
 (0)