-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path16.js
More file actions
46 lines (37 loc) · 1.21 KB
/
Copy path16.js
File metadata and controls
46 lines (37 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
16. 3Sum Closest
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.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
*/
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var threeSumClosest = function(nums, target) {
let res;
let minSub = +Infinity;
if (nums.length <= 3) return nums.reduce((a, b) => a + b, 0);
for (let i = 0; i < nums.length - 2; ++i) {
for (let j = i + 1; j < nums.length - 1; ++j) {
for (let k = j + 1; k < nums.length; ++k) {
const sum = nums[i] + nums[j] + nums[k];
if (sum === target) return target;
else {
const sub = Math.abs(sum - target);
if (minSub > sub) {
minSub = sub;
res = sum;
}
}
}
}
}
return res;
};
console.log(threeSumClosest([0, 1, 2], 0));
console.log(threeSumClosest([-1, 2, 1, -4], 1));
console.log(threeSumClosest([1, 1, 1, 1], 0));
console.log(threeSumClosest([1,2,4,8,16,32,64,128], 82));