您的位置:首页 > 编程语言 > C语言/C++

LeetCode 16 C++ 最接近的三数之和

2019-04-01 17:18 435 查看

类似第15题

[code]#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
class Solution
{
public:
int threeSumClosest(vector<int>& nums, int target){
sort(nums.begin(), nums.end());
int res = nums[0] + nums[1] + nums[2];
int dvalue = abs(target - res);
int l, r, sum;
for (int i = 0; i < nums.size() - 2; i++){
l = i + 1;
r = nums.size() - 1;
if (3 * nums[i] > target)
break;
while (l < r){
sum = nums[i] + nums[l] + nums[r];
if (sum < target)
++l;
else if (sum > target)
--r;
else
return target;
if (abs(target - sum) < dvalue){
res = sum;
dvalue = abs(target - sum);
}
}
}
return res;
}
};
int main(){
Solution s;
vector<int> b = { -1,2,1,-4};
int c = 1;
int a;
a = s.threeSumClosest(b, 1);
cout << a;
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: