File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * 문제 유형
3
+ * - Array (정렬 + 투포인터)
4
+ *
5
+ * 문제 설명
6
+ * - 3개의 수를 더해서 0이 되는 경우를 찾아서 배열로 반환하기
7
+ *
8
+ * 아이디어
9
+ * 1) 정렬 후 투포인터 사용, 중복 제거
10
+
11
+ */
12
+ function threeSum ( nums : number [ ] ) : number [ ] [ ] {
13
+ const result : number [ ] [ ] = [ ] ;
14
+
15
+ // sorting
16
+ nums . sort ( ( a , b ) => a - b ) ;
17
+
18
+ for ( let i = 0 ; i < nums . length - 2 ; i ++ ) {
19
+ // 중복 제거
20
+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
21
+
22
+ let left = i + 1 ;
23
+ let right = nums . length - 1 ;
24
+ while ( left < right ) {
25
+ const sum = nums [ i ] + nums [ left ] + nums [ right ] ;
26
+ if ( sum === 0 ) {
27
+ result . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
28
+ left ++ ;
29
+ right -- ;
30
+
31
+ // 중복 제거
32
+ while ( left < right && nums [ left ] === nums [ left - 1 ] ) left ++ ;
33
+ while ( left < right && nums [ right ] === nums [ right + 1 ] ) right -- ;
34
+ } else if ( sum < 0 ) {
35
+ left ++ ;
36
+ } else {
37
+ right -- ;
38
+ }
39
+ }
40
+ }
41
+ return result ;
42
+ }
You can’t perform that action at this time.
0 commit comments