Leetcode 16 3Sum Closest
这道题和3sum非常类似。区别的一点就是一旦找到了answer就直接return了,而不需要做进一步的处理了。代码如下所示:
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { int n = nums.size(); int minValue = 0x7fffffff; int ret = 0; sort(nums.begin(), nums.end()); for (int i=0; i<n-2; ++i) { int l = i + 1; int r = n - 1; while (l < r) { int sum = nums[i] + nums[l] + nums[r]; if (sum == target) { return target; } else if (sum < target) { ++l; if (target - sum < minValue) { minValue = target - sum; ret = sum; } } else { --r; if (sum - target < minValue) { minValue = sum - target; ret = sum; } } } while (i < n-2 && nums[i] == nums[i+1]) { ++i; } } return ret; } };

浙公网安备 33010602011771号