Skip to content

Commit 6c92f11

Browse files
committed
📝 Docs: sovled 1 - 3sum
1 parent c669b7b commit 6c92f11

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

3sum/jangwonyoon.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*
5+
* 1. 투포인터를 사용하기 위해 정렬
6+
* 2. 투포인터를 사용하여 합이 0인 경우 추가
7+
* 3. 중복 된 값 스킵
8+
*
9+
* 시간 복잡도: O(n^2)
10+
* 공간 복잡도: O(K + kLogK) (K: 결과 배열의 크기, kLogK: 정렬 공간)
11+
*/
12+
var threeSum = function(nums) {
13+
const arr = [];
14+
15+
// 투포인터를 사용하기 위해 정렬
16+
nums.sort((a, b) => a - b);
17+
18+
for (let i = 0; i < nums.length - 2; i++) {
19+
if (i > 0 && nums[i] === nums[i - 1]) continue;
20+
21+
let left = i + 1;
22+
let right = nums.length - 1;
23+
24+
while (left < right) {
25+
const sum = nums[i] + nums[left] + nums[right];
26+
27+
if (sum === 0) {
28+
arr.push([nums[i], nums[left], nums[right]]);
29+
left++;
30+
right--;
31+
} else if (sum > 0) {
32+
right--;
33+
} else {
34+
left++;
35+
}
36+
}
37+
}
38+
39+
return arr;
40+
};

0 commit comments

Comments
 (0)