Skip to content

Commit 3ef6402

Browse files
committed
leetcode 16
1 parent 40df8b6 commit 3ef6402

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
- 12.Integer to Roman `medium` `math` `string` [link](https://leetcode.com/problems/integer-to-roman/description/) [code](./leetcode/12.js)
3232
- 13.Roman to Integer `medium` `math` `string` [link](https://leetcode.com/problems/roman-to-integer/description/) [code](./leetcode/13.js)
3333
- 14.Longest Common Prefix `easy` `string` [link](https://leetcode.com/problems/longest-common-prefix/description/) [code](./leetcode/14.js)
34+
- 15.3Sum `medium` `array` [link](https://leetcode.com/problems/3sum/) [code](./leetcode/15.js)
35+
- 16.3Sum Closest `medium` `array` [link](https://leetcode.com/problems/3sum-closest/) [code](./leetcode/16.js)
3436

3537
## lintcode
3638

leetcode/16.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
16. 3Sum Closest
3+
4+
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
5+
6+
Example:
7+
8+
Given array nums = [-1, 2, 1, -4], and target = 1.
9+
10+
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
11+
*/
12+
13+
/**
14+
* @param {number[]} nums
15+
* @param {number} target
16+
* @return {number}
17+
*/
18+
var threeSumClosest = function(nums, target) {
19+
let res;
20+
let minSub = +Infinity;
21+
22+
if (nums.length <= 3) return nums.reduce((a, b) => a + b, 0);
23+
24+
for (let i = 0; i < nums.length - 2; ++i) {
25+
for (let j = i + 1; j < nums.length - 1; ++j) {
26+
for (let k = j + 1; k < nums.length; ++k) {
27+
const sum = nums[i] + nums[j] + nums[k];
28+
if (sum === target) return target;
29+
else {
30+
const sub = Math.abs(sum - target);
31+
if (minSub > sub) {
32+
minSub = sub;
33+
res = sum;
34+
}
35+
}
36+
}
37+
}
38+
}
39+
40+
return res;
41+
};
42+
43+
console.log(threeSumClosest([0, 1, 2], 0));
44+
console.log(threeSumClosest([-1, 2, 1, -4], 1));
45+
console.log(threeSumClosest([1, 1, 1, 1], 0));
46+
console.log(threeSumClosest([1,2,4,8,16,32,64,128], 82));

0 commit comments

Comments
 (0)