最接近的三数之和:link
1.题目分析
这个题和leetcode15题三数之和一样的思路,固定一个数,然后去寻找另外两个数,找到满足要求的的更新解。
2.示例代码
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
//固定一个,另外两个是活动的
sort(nums.begin(), nums.end());
int ret = nums[0] + nums[1] + nums[2];
for(int i = 0; i < nums.size() - 2; ++i){
int bestSum = target - nums[i];
int lo = i + 1, hi = nums.size() - 1;
while(lo < hi){
int curSum = nums[lo] + nums[hi];
if(abs(nums[i] + curSum - target) < abs(ret - target)){
ret = nums[i] + curSum;
}
if(curSum < bestSum){
lo++;
}else if(curSum > bestSum){
hi--;
}else{
return target;
}
}
}
return ret;
}
};