1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); int diff = INT_MAX; for(size_t i = 0; i < nums.size() && diff != 0; ++i) { int lo = i + 1, hi = nums.size() - 1; while(lo < hi) { int sum = nums[i] + nums[lo] + nums[hi]; if(abs(sum - target) < abs(diff)) { diff = sum - target; } if(sum < target) ++lo; else --hi; } } return diff + target; } };
|