您的位置:首页 > 其它

leetcode腾讯精选50-016

2019-05-22 00:30 260 查看

题目:https://leetcode-cn.com/problems/3sum-closest/
代码:class Solution {
public:
int threeSumClosest(vector& nums, int target) {

sort(nums.begin(), nums.end());

int size = nums.size();
//if (nums.front() > target) return nums[0] + nums[1] + nums[2];
//if (nums.back() < target) return  nums[size - 1] + nums[size - 2] + nums[size - 3];

int res = nums[0] + nums[2] + nums[1];

for (int i = 0; i < nums.size(); i++)
{
int a = nums[i];
//if (a > target) break;

int l = i + 1;
int r = nums.size() - 1;

if(l >=r) break;

int tmp = nums[l] + nums[r] + a;

while (l < r)
{
int sum = nums[l] + nums[r] + a;
if ( abs(sum - target) < abs(tmp - target))
{
tmp = sum;
}
if (nums[l] + nums[r] == target -a)
{
tmp = target;
return target;
}
else if (nums[l] + nums[r] >target -a)
{
r--;

}
else
{
l++;
}

}

if (abs(res - target)> abs(tmp - target))
res = tmp;

}

return res;

}

};

结果:

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