3Sum Closest--LeetCode

来源:互联网 发布:python黑帽子百度云 编辑:程序博客网 时间:2024/04/29 07:15

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).
思路:从中挑选出任意三个,比较这三个值和目标相距最经的和是什么

void helper(vector<int>& vec,int index,int num,vector<int>& path,int target,int& difference,int& result){if(index >= vec.size())return ;path.push_back(vec[index]);num--;if(num ==0){int i=0;int sum=0;sum =accumulate(path.begin(),path.end(),sum);if(difference > abs(target-sum)){      difference = abs(target-sum);  result = sum;              } }helper(vec,index+1,num,path,target,difference,result);path.pop_back();num++;helper(vec,index+1,num,path,target,difference,result);}int threeSumClosest(vector<int>& vec,int target){if(vec.size()==0)return 0;vector<int> path;int result;int difference = numeric_limits<int>::max();helper(vec,0,3,path,target,difference,result);    return result;} 
ps:其实这个题目的思路和组合的思路一样,只不过这里选择出来之后还需要和目标元素进行比较。

0 0
原创粉丝点击