思路:固定一端后使用双指针不断探索中间的最优解
复杂度O(n^2)
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;
int end = nums.length-1;
while(start < end){
int sum = nums[i]+nums[start] + nums[end];
if(Math.abs(target - ans )>Math.abs(target - sum)){
ans = sum;
}
if(sum < target)
start++;
if(sum>target)
end--;
if(sum==target)
return ans;
}
}
return ans;
}
}