给出含有n个整数的数组s,找出s中和加起来的和最接近给定的目标值的三个整数。返回这三个整数的和。你可以假设每个输入都只有唯一解。
例如,给定的整数 S = {-10 20 10 -40}, 目标值 = 10.
最接近目标值的和为 2. (-10 + 20 + 10 = 20).
示例1
输入
[0,0,0],1
输出
0
解析:
public class Solution { public int threeSumClosest(int[] num, int target) { int result = num[0] + num[1] + num[num.length - 1];
Arrays.sort(num);
for (int i = 0; i < num.length - 2; i++) { int start = i + 1, end = num.length - 1; while (start < end) { int sum = num[i] + num[start] + num[end]; if (sum > target) { end--;
} else {
start++;
} if (Math.abs(sum - target) < Math.abs(result - target)) {
result = sum;
}
}
} return result;
}
}