题目
代码实现
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);//将数组排序,方便使用双指针
int result = nums[0] + nums[1] + nums[2];
for(int i=0;i<nums.length;i++) {
int left = i+1, right = nums.length - 1;
while(left < right) {
int sum = nums[i] + nums[left] + nums[right];
if(Math.abs(target - sum) < Math.abs(target - result)){//如果离此时的sum离target比result更近,就将sum的值赋给result。
result = sum;
}
if(sum > target){//比target大,就right--,sum会减少
right--;
}else if(sum < target){//比target小,就left++,sum会增大
left++;
}else{//sum刚好等于target,返回sum
return sum;
}
}
}
return result;
}
}
结果