#include <iostream>
#include <vector>
#include<algorithm>
#include <queue>
using namespace std;
/************************************************************************/
/*
Problem:
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
For example, given array S = {-1 2 1 -4}, and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
Author : crazys_popcorn@126.com
DateTime: 2017年8月2日 18:39:17
*/
/************************************************************************/
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target)
{
sort(nums.begin(), nums.end());
//Blind Dick, write a value, and then gradually contrast
int value = nums[0] + nums[1] + nums[2];
int diff = abs(target - value);
for (int i =0;i<nums.size()-2;i++)
{
int left = i + 1;
int right = nums.size()-1;
while (left < right)
{
int temp = nums[i] + nums[left] + nums[right];
//对比差值
int newdiff = abs(target - temp);
//差价较小//更新 返回值 、、
if (newdiff < diff)
{
diff = newdiff;
value = temp;
}
//because sort so :temp < target ++ left otherwise --ritht
if (temp < target)
{
++left;
}
else
{
--right;
}
}
}
return value;
}
};
void main()
{
std::vector<int> arr = {1,1,1,0 };
Solution s1;
std::cout<<s1.threeSumClosest(arr,100);
std::cout<<""<<endl;
system("pause");
}
LeetCode 3Sum Closest C++
最新推荐文章于 2024-09-08 20:02:08 发布