File tree Expand file tree Collapse file tree 3 files changed +106
-0
lines changed
solution/0000-0099/0015.3Sum Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change @@ -128,6 +128,43 @@ class Solution {
128128}
129129```
130130
131+ ### ** JavaScript**
132+
133+ ``` js
134+ /**
135+ * @param {number[]} nums
136+ * @return {number[][]}
137+ */
138+ var threeSum = function (nums ) {
139+ let len = nums .length ;
140+ if (len < 3 ) return [];
141+ let res = [];
142+ nums .sort ((a , b ) => a - b);
143+ for (let i = 0 ; i < len - 2 ; i++ ) {
144+ if (nums[i] > 0 ) break ;
145+ if (i > 0 && nums[i] === nums[i - 1 ]) continue ;
146+ let left = i + 1 , right = len - 1 ;
147+ while (left < right) {
148+ if (nums[i] + nums[left] + nums[right] === 0 ) {
149+ res .push ([nums[i], nums[left], nums[right]]);
150+ while (nums[left] == nums[left + 1 ]) left++ ;
151+ left++ ;
152+ while (nums[right] == nums[right + 1 ]) right-- ;
153+ right-- ;
154+ continue ;
155+ } else if (nums[i] + nums[left] + nums[right] > 0 ) {
156+ right-- ;
157+ continue ;
158+ } else {
159+ left++ ;
160+ continue ;
161+ }
162+ }
163+ }
164+ return res;
165+ };
166+ ```
167+
131168### ** ...**
132169
133170```
Original file line number Diff line number Diff line change @@ -105,6 +105,43 @@ class Solution {
105105}
106106```
107107
108+ ### ** JavaScript**
109+
110+ ``` js
111+ /**
112+ * @param {number[]} nums
113+ * @return {number[][]}
114+ */
115+ var threeSum = function (nums ) {
116+ let len = nums .length ;
117+ if (len < 3 ) return [];
118+ let res = [];
119+ nums .sort ((a , b ) => a - b);
120+ for (let i = 0 ; i < len - 2 ; i++ ) {
121+ if (nums[i] > 0 ) break ;
122+ if (i > 0 && nums[i] === nums[i - 1 ]) continue ;
123+ let left = i + 1 , right = len - 1 ;
124+ while (left < right) {
125+ if (nums[i] + nums[left] + nums[right] === 0 ) {
126+ res .push ([nums[i], nums[left], nums[right]]);
127+ while (nums[left] == nums[left + 1 ]) left++ ;
128+ left++ ;
129+ while (nums[right] == nums[right + 1 ]) right-- ;
130+ right-- ;
131+ continue ;
132+ } else if (nums[i] + nums[left] + nums[right] > 0 ) {
133+ right-- ;
134+ continue ;
135+ } else {
136+ left++ ;
137+ continue ;
138+ }
139+ }
140+ }
141+ return res;
142+ };
143+ ```
144+
108145### ** ...**
109146
110147```
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number[][] }
4+ */
5+ var threeSum = function ( nums ) {
6+ let len = nums . length ;
7+ if ( len < 3 ) return [ ] ;
8+ let res = [ ] ;
9+ nums . sort ( ( a , b ) => a - b ) ;
10+ for ( let i = 0 ; i < len - 2 ; i ++ ) {
11+ if ( nums [ i ] > 0 ) break ;
12+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
13+ let left = i + 1 , right = len - 1 ;
14+ while ( left < right ) {
15+ if ( nums [ i ] + nums [ left ] + nums [ right ] === 0 ) {
16+ res . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
17+ while ( nums [ left ] == nums [ left + 1 ] ) left ++ ;
18+ left ++ ;
19+ while ( nums [ right ] == nums [ right + 1 ] ) right -- ;
20+ right -- ;
21+ continue ;
22+ } else if ( nums [ i ] + nums [ left ] + nums [ right ] > 0 ) {
23+ right -- ;
24+ continue ;
25+ } else {
26+ left ++ ;
27+ continue ;
28+ }
29+ }
30+ }
31+ return res ;
32+ } ;
You can’t perform that action at this time.
0 commit comments