Skip to content

Commit 0a306e4

Browse files
committed
add js solution to leetcode problem: no.15
1 parent 11b6e20 commit 0a306e4

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

solution/0000-0099/0015.3Sum/README.md

+37
Original file line numberDiff line numberDiff 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
```

solution/0000-0099/0015.3Sum/README_EN.md

+37
Original file line numberDiff line numberDiff 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
```
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
};

0 commit comments

Comments
 (0)