思路:三指针,以例子进行分析:(感觉这题还是很不错的)
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
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() - 3; i++)
{
int start = i + 1, end = nums.size() - 1;
while (start != end)
{
int temp = nums[i] + nums[start] + nums[end];
if (abs(temp - target) < abs(ans - target))
ans = temp;
if (temp < target)
start++;
else
if (temp > target)
end--;
else
return ans;
}
}
return ans;
}
};