0%

16. 3Sum Closest

16. 3Sum Closest

refer 3sum
Solution 1( 2 points)
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;
}
};