题目描述:
给定一个包括n个整数的数组nums和一个target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一的答案。
题目解析:采用双指针的方式进行。跟前面题(三整数和解法类似)
class Solution{
public:
int threeSumClosest(vector<int>& nums, int target){
sort(nums.begin(),nums.end());
int ans = nums[0]+nums[1]+nums[2];
for(int i=0;i<nums.size();i++)
{
int left=i+1,right=nums.size()-1;
while(left<right) //当左指针小于右指针时
{
int sum=nums[left]+nums[right]+nums[i];
if(abs(target-sum)<abs(target-ans)) ans = sum;
if(sum==target) return ans; //如果中间值与目标值相等了,则直接返回
else if(sum<target) left++;
else right--;
}
}
return ans;
}
};