您的位置:首页 > 其它

LintCode-k数和 II

2015-06-24 23:25 141 查看
给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。    
在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。

您在真实的面试中是否遇到过这个题?

Yes

样例

给出[1,2,3,4],k=2,
target=5,返回 [[1,4],[2,3]]

标签 Expand

相关题目 Expand

分析:就是简单的递归练习,注意剪枝

代码:

class Solution {
public:
/**
* @param A: an integer array.
* @param k: a positive integer (k <= length(A))
* @param target: a integer
* @return a list of lists of integer
*/
vector<vector<int> > kSumII(vector<int> A, int k, int target) {
// write your code here
vector<int> cur;
vector<vector<int> > ret;
deal(A,0,k,target,0,cur,ret);
return ret;
}
void deal(vector<int>& A,int index,int k,int target,int sum,vector<int> cur,vector<vector<int> > &ret)
{
if(cur.size()==k&&sum==target)
{
ret.push_back(cur);
return;
}
if(index==A.size())
return;
if(sum>target)
return;
cur.push_back(A[index]);
deal(A,index+1,k,target,sum+A[index],cur,ret);
cur.pop_back();
deal(A,index+1,k,target,sum,cur,ret);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: