这道题也是很像上一道。
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int ans = nums[0] + nums[1] + nums[2];
if(ans == target) return target;
int len = nums.size();
for(int i = 0;i<len;i++)
{
int j = i+1;
int k = len-1;
while(j<k)
{
int temp = nums[i] + nums[j] + nums[k];
if( abs( temp-target) < abs(ans-target))
{
ans = temp;
}
if(temp > target)
{
k--;
}
else if(temp<target)
{
j++;
}
else
{
return ans;
}
}
}
return ans;
}
还可以暴力一下,非常愉快
int threeSumClosest(vector<int>& nums, int target) {
int ans = nums[0] + nums[1] + nums[2];
int n = nums.size();
for(int i = 0;i<n;i++)
{
for(int j = i+1;j<n;j++)
{
for(int k = j+1;k<n;k++)
{
if(abs(nums[i] + nums[j] + nums[k] -target)<abs(ans-target))
{
ans = nums[i] + nums[j] + nums[k];
}
}
}
}
return ans;
}
谁知道生活会给你带来什么呢?坚持一下吧,不要被海水淹没,控制一下自己,已经做得很好啦~
什么都不要想,就没有什么可以打败我。