File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * [Problem]: [15] 3Sum
3
+ * (https://leetcode.com/problems/3sum/description/)
4
+ */
5
+
6
+ function threeSum ( nums : number [ ] ) : number [ ] [ ] {
7
+ //시간 복잡도: O(n^2)
8
+ //공간 복잡도: O(1)
9
+ function pointerFunc ( nums : number [ ] ) : number [ ] [ ] {
10
+ const result : number [ ] [ ] = [ ] ;
11
+ nums . sort ( ( a , b ) => a - b ) ;
12
+
13
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
14
+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
15
+ let left = i + 1 ;
16
+ let right = nums . length - 1 ;
17
+
18
+ while ( left < right ) {
19
+ const sum = nums [ i ] + nums [ left ] + nums [ right ] ;
20
+ if ( sum === 0 ) {
21
+ result . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
22
+
23
+ while ( left < right && nums [ left ] === nums [ left + 1 ] ) left ++ ;
24
+ while ( left < right && nums [ right ] === nums [ right - 1 ] ) right -- ;
25
+
26
+ left ++ ;
27
+ right -- ;
28
+ } else if ( sum < 0 ) {
29
+ left ++ ;
30
+ } else {
31
+ right -- ;
32
+ }
33
+ }
34
+ }
35
+ return result ;
36
+ }
37
+
38
+ return pointerFunc ( nums ) ;
39
+ }
You can’t perform that action at this time.
0 commit comments