File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ *
3
+ * 시간 복잡도: O(n log n) + O(n^2) => O(n^2)
4
+ * 공간 복잡도: O(1)
5
+ * - 자바스크립트 배열은 원래의 배열 자체를 바꿈
6
+ */
7
+ const threeSum = ( numbers ) => {
8
+ let result = [ ] ;
9
+ numbers . sort ( ( a , b ) => a - b ) ;
10
+
11
+ for ( let i = 0 ; i < numbers . length ; i += 1 ) {
12
+ if ( i > 0 && numbers [ i ] === numbers [ i - 1 ] ) continue ;
13
+
14
+ let l = i + 1 ;
15
+ let r = numbers . length - 1 ;
16
+
17
+ while ( l < r ) {
18
+ const threeSum = numbers [ i ] + numbers [ l ] + numbers [ r ] ;
19
+
20
+ if ( threeSum > 0 ) {
21
+ r -= 1 ;
22
+ } else if ( threeSum < 0 ) {
23
+ l += 1 ;
24
+ } else {
25
+ result . push ( [ numbers [ i ] , numbers [ l ] , numbers [ r ] ] ) ;
26
+ while ( l < r && numbers [ l ] === numbers [ l + 1 ] ) l += 1 ;
27
+ while ( l < r && numbers [ r ] === numbers [ r - 1 ] ) r -= 1 ;
28
+ l += 1 ;
29
+ r -= 1 ;
30
+ }
31
+ }
32
+ }
33
+
34
+ return result ;
35
+ } ;
You can’t perform that action at this time.
0 commit comments