59.3Sum Closest
1.Description(Medium)
Notice
2.Code
public int threeSumClosest(int[] numbers, int target) {
if(numbers==null || numbers.length<3){
return 0;
}
Arrays.sort(numbers);
int mindiff=Integer.MAX_VALUE;
for(int i=0;i<numbers.length-2;i++){
int left=i+1;
int right=numbers.length-1;
while(left<right){
//这里diff用sum-target,之后返回的时候直接返回target+diff即可。
int sum=numbers[left]+numbers[right]+numbers[i];
int diff=sum-target;
//这样的话diff的正负就不对了
//mindiff=Math.min(mindiff, Math.abs(diff));
//正确的写法是:
if(Math.abs(diff)<Math.abs(mindiff)){
mindiff=diff;
}
if(diff==0){
return target;
}
else if(diff<0){
left++;
}else{
right--;
}
}
}
return target+mindiff;
}Last updated