File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments