您的位置:首页 > 其它

leetcode16 3Sum Closest

2015-10-24 11:17 543 查看
题意大概就给定一个数组,和一个整数,问那三个数的加和与给定的数最接近,感觉还没有上一题难,暴力破解.......

解法和上一题差不多,增加几个变量计算一下差值,遇到更小的就存一下.

#include "iostream"
#include "vector"
#include "algorithm"
#include "string"
using namespace std;

class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int len = nums.size();
int right,left;
sort(nums.begin(),nums.end());
int min = 99999999;
int result;
int temp;

if(len < 3)
return result;

for(int i = 0 ; i < nums.size()-2; i++)
//cout<<"("<<nums[i]<<")\n";
{

right = i+1;
left = nums.size()-1;

for(;right<left;)
{
temp = abs((nums[i]+nums[right]+nums[left])-target);
if(temp<min)
{
min = temp;
result = nums[i]+nums[right]+nums[left];
if(min == 0)
break;
}

if(nums[i]+nums[right]+nums[left] > target)
{
left--;

}
else
{
right++;
}
}

}

return result;
}
};

int main()
{
Solution test;

vector<int> num;

num.push_back(1);
num.push_back(1);
num.push_back(1);
num.push_back(0);
num.push_back(1);

int result;

int dig = 100;

result = test.threeSumClosest(num,dig);

cout<<result<<endl;

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