题目链接
题目描述
实现代码
思路:首先固然是需要进行至少一遍遍历的,我们先对数组进行排序便于后续操作,假设我们进行第一次遍历获取三个数中的第一个数,然后对其余两个通过头尾双指针的形式进行选取,按照缩小与target的距离为原则进行指针移动,最终求得解;实现代码如下:
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
int ans = nums[0] + nums[1] + nums[2];
for(int i=0;i<nums.length;i++) {
int start = i+1, end = nums.length - 1;
while(start < end) {
int sum = nums[start] + nums[end] + nums[i];
if(Math.abs(target - sum) < Math.abs(target - ans))
ans = sum;
if(sum > target)
end--;
else if(sum < target)
start++;
else
return ans;
}
}
return ans;
}
}