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