LeetCode 16. 最接近的三数之和
原题链接
中等
作者:
bruce
,
2021-01-24 19:58:39
,
所有人可见
,
阅读 284
int threeSumClosest(vector<int> &nums, int target)
{
sort(nums.begin(), nums.end());
int ans = nums[0] + nums[1] + nums[2];
int n = nums.size();
for (int i = 0; i < n; i++)
{
if(i && nums[i] == nums[i-1]) continue;
int left = i + 1, right = n - 1;
while (left < right)
{
int sum = nums[i] + nums[left] + nums[right];
if(sum == target) return sum;
if(abs(sum - target) < abs(ans - target)) ans = sum;
else if(sum < target) left ++;
else right --;
}
}
return ans;
}