16. 最接近的三数之和
题目:
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
思路:在15题基础上进行修改。增加变量temp最接近程度,aabs当前接近程度。
代码:
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
int sum=10000,temp=1000,aabs=0;
for(int i=0;i<nums.length-2;i++){
for(int j=i+1,k=nums.length-1;j<k;){
if(nums[i]+nums[j]+nums[k]==target){
return target;
}
if(nums[i]+nums[j]+nums[k]<target){
aabs=Math.abs(target-nums[i]-nums[j]-nums[k]); //当前接近程度
if(aabs<temp){ //当前接近为目前最接近
temp=aabs;
sum=nums[i]+nums[j]+nums[k];
}
j++;
}
else{
aabs=Math.abs(target-nums[i]-nums[j]-nums[k]); //当前接近程度
if(aabs<temp){ //当前接近为目前最接近
temp=aabs;
sum=nums[i]+nums[j]+nums[k];
}
k--;
}
}
}
return sum;
}
}
浙公网安备 33010602011771号