Skip to content

Commit b05569d

Browse files
committed
Add js solution to leetcode problem: no.0016
1 parent 57d62a7 commit b05569d

File tree

3 files changed

+139
-0
lines changed

3 files changed

+139
-0
lines changed

solution/0000-0099/0016.3Sum Closest/README.md

+48
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,54 @@ class Solution {
114114
}
115115
```
116116

117+
### **JavaScript**
118+
119+
```js
120+
/**
121+
* @param {number[]} nums
122+
* @param {number} target
123+
* @return {number}
124+
*/
125+
var threeSumClosest = function (nums, target) {
126+
let len = nums.length;
127+
nums.sort((a, b) => a - b);
128+
let diff = Infinity;
129+
let res;
130+
for (let i = 0; i < len - 2; i++) {
131+
if (i > 0 && nums[i] === nums[i - 1]) continue;
132+
let left = i + 1, right = len - 1;
133+
let cur = nums[i] + nums[i + 1] + nums[i + 2];
134+
if (cur > target) {
135+
let newDiff = Math.abs((cur - target))
136+
if (newDiff < diff) {
137+
diff = newDiff;
138+
res = cur;
139+
}
140+
break;
141+
}
142+
while (left < right) {
143+
cur = nums[i] + nums[left] + nums[right];
144+
if (cur === target) return target;
145+
let newDiff = Math.abs((cur - target))
146+
if (newDiff < diff) {
147+
diff = newDiff;
148+
res = cur;
149+
}
150+
if (cur < target) {
151+
while (nums[left] === nums[left + 1]) left++;
152+
left++;
153+
continue;
154+
} else {
155+
while (nums[right] === nums[right - 1]) right--;
156+
right--;
157+
continue;
158+
}
159+
}
160+
}
161+
return res;
162+
};
163+
```
164+
117165
### **...**
118166

119167
```

solution/0000-0099/0016.3Sum Closest/README_EN.md

+48
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,54 @@ class Solution {
103103
}
104104
```
105105

106+
### **JavaScript**
107+
108+
```js
109+
/**
110+
* @param {number[]} nums
111+
* @param {number} target
112+
* @return {number}
113+
*/
114+
var threeSumClosest = function (nums, target) {
115+
let len = nums.length;
116+
nums.sort((a, b) => a - b);
117+
let diff = Infinity;
118+
let res;
119+
for (let i = 0; i < len - 2; i++) {
120+
if (i > 0 && nums[i] === nums[i - 1]) continue;
121+
let left = i + 1, right = len - 1;
122+
let cur = nums[i] + nums[i + 1] + nums[i + 2];
123+
if (cur > target) {
124+
let newDiff = Math.abs((cur - target))
125+
if (newDiff < diff) {
126+
diff = newDiff;
127+
res = cur;
128+
}
129+
break;
130+
}
131+
while (left < right) {
132+
cur = nums[i] + nums[left] + nums[right];
133+
if (cur === target) return target;
134+
let newDiff = Math.abs((cur - target))
135+
if (newDiff < diff) {
136+
diff = newDiff;
137+
res = cur;
138+
}
139+
if (cur < target) {
140+
while (nums[left] === nums[left + 1]) left++;
141+
left++;
142+
continue;
143+
} else {
144+
while (nums[right] === nums[right - 1]) right--;
145+
right--;
146+
continue;
147+
}
148+
}
149+
}
150+
return res;
151+
};
152+
```
153+
106154
### **...**
107155

108156
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number}
5+
*/
6+
var threeSumClosest = function (nums, target) {
7+
let len = nums.length;
8+
nums.sort((a, b) => a - b);
9+
let diff = Infinity;
10+
let res;
11+
for (let i = 0; i < len - 2; i++) {
12+
if (i > 0 && nums[i] === nums[i - 1]) continue;
13+
let left = i + 1, right = len - 1;
14+
let cur = nums[i] + nums[i + 1] + nums[i + 2];
15+
if (cur > target) {
16+
let newDiff = Math.abs((cur - target))
17+
if (newDiff < diff) {
18+
diff = newDiff;
19+
res = cur;
20+
}
21+
break;
22+
}
23+
while (left < right) {
24+
cur = nums[i] + nums[left] + nums[right];
25+
if (cur === target) return target;
26+
let newDiff = Math.abs((cur - target))
27+
if (newDiff < diff) {
28+
diff = newDiff;
29+
res = cur;
30+
}
31+
if (cur < target) {
32+
while (nums[left] === nums[left + 1]) left++;
33+
left++;
34+
continue;
35+
} else {
36+
while (nums[right] === nums[right - 1]) right--;
37+
right--;
38+
continue;
39+
}
40+
}
41+
}
42+
return res;
43+
};

0 commit comments

Comments
 (0)