这个题目确实不知道这种解法,看来以后遇到问题得多思考这种 指针挪动 的方法了,加油
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int length=nums.size(),res=nums[0]+nums[1]+nums[2];
sort(nums.begin(),nums.end());
for(int i=0;i<length-2;i++)
{
int j=i+1,k=length-1;
while(k>j)
{
int sum=nums[i]+nums[j]+nums[k];
if(abs(target-sum)<abs(target-res))
res=sum;
if(sum>target)
k--;
else if(sum==target)
return target;
else
j++;
}
}
return res;
}
};
具体的画图解释,见链接:https://leetcode.com/problems/3sum-closest/discuss/