原题链接:https://leetcode.com/problems/3sum-closest/description/
我的实现:
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); int size = nums.size(); int minSum = nums[0] + nums[1] + nums[2]; int maxSum = nums[size - 3] + nums[size - 2] + nums[size - 1]; if (minSum >= target) return minSum; if (maxSum <= target) return maxSum; int result = minSum; for (int i = 0; i < size - 2; i++) { int start = i + 1; int end = size - 1; while (start < end) { int sum = nums[i] + nums[start] + nums[end]; if (sum == target) return sum; else if (sum < target) { start++; } else { end--; } if (abs(sum - target) < abs(result - target)) result = sum; } } return result; } };