题目
https://leetcode-cn.com/problems/3sum-closest/
代码
要注意去重
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
int len=nums.length;
int min=Integer.MAX_VALUE;//最小差值
int value=0;//最接近的目标和
for(int i=0;i<len;i++){
if(i>0&&nums[i]==nums[i-1]){//a去重
continue;
}
int a=nums[i];
int b=i+1;
int c=len-1;
while(b<c){
int tmp=a+nums[b]+nums[c];
if(tmp==target){
return target;
}
else if(tmp<target){
while(b+1<c&&b<c&&nums[b]==nums[b+1]){//b去重
b++;
}
b++;
}
else if(tmp>target){
while(c-1>b&&c>b&&nums[c]==nums[c-1]){//c去重
c--;
}
c--;
}
if(Math.abs(tmp-target)<min){
min=Math.abs(tmp-target);
value=tmp;
}
}
}
return value;
}
}