思想:三数之和的变形
class Solution {
public int threeSumClosest(int[] nums, int target) {
int len = nums.length;
if(len<3) return 0;
Arrays.sort(nums);
int error = Integer.MAX_VALUE;
int res = 0;
for(int i=0;i<len;i++){
int left = i+1,right = len-1;
while(left<right){
int sum = (nums[i]+nums[left]+nums[right]);
int diff = sum-target;
if(diff==0){//误差为0肯定是最接近的直接返回
return sum;
}
//更新误差和res
if(Math.abs(diff)<error){
error = Math.abs(diff);
res = sum;
}//根据误差进行调整
if(diff>0){
right--;
}else{
left++;
}
}
}
return res;
}
}