# 16 - 3Sum Closest
解法一 - 採用跟 #15 解法一類似的做法,只是改成用 minDiff 去 track 最接近 target 的 sum
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int res, minDiff = INT_MAX;
sort(nums.begin(), nums.end());
for(int i=0; i<nums.size(); i++) {
int front = i+1;
int back = nums.size()-1;
while(front < back) {
int sum = nums[i] + nums[front] + nums[back];
int diff = abs(target - sum);
if(diff < minDiff) {
minDiff = diff;
res = sum;
}
if(sum < target) {
front++;
}
else if(sum > target) {
back--;
}
else {
return target;
}
}
while(i+1<nums.size() && nums[i+1] == nums[i])
i++;
}
return res;
}
};
Last updated