链接
题目描述
排序+双指针
思路
代码
class Solution {
public int threeSumClosest(int[] nums, int target) {
if(nums == null || nums.length < 3){
return 0;
}
Arrays.sort(nums);
int nearestDis = Integer.MAX_VALUE;
int res = 0;
for(int i = 0; i < nums.length-2 ;i++){
int l = i+1;
int r = nums.length-1;
while(l < r){
int sum = nums[i] + nums[l] + nums[r];
if(sum == target){
return target;
}else if(sum > target){
if(Math.abs(sum-target) < nearestDis){
nearestDis = Math.abs(sum-target);
res = sum;
}
r--;
}else{
if(Math.abs(sum-target) < nearestDis){
nearestDis = Math.abs(sum-target);
res = sum;
}
l++;
}
}
}
return res;
}
}