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