您的位置:首页 > 其它

[Leetcode]Combination Sum III

2015-11-16 21:45 239 查看
LeetCode OJ

LeetCode Premium Subscription

Problems

Pick One!

Courses

Discuss

Book

WooStam

Combination Sum III My Submissions Question

Total Accepted: 17981 Total Submissions: 56703 Difficulty: Medium

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Ensure that numbers within the set are sorted in ascending order.

Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]

Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]]

Credits:

Special thanks to @mithmatt for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

class Solution {
public:
vector<vector<int>> combinationSum3(int k, int n) {
vector<vector<int> >    res;
vector<int> tem;
dfs(k,n,1,tem,res);
return res;
}

private:
void dfs(int k,int n,int i,vector<int>& tem,vector<vector<int> >& res){
if(k == 0 && n == 0){
res.push_back(tem);
//tem.clear();//开始时候写了这句怎么改怎么错,原先想的是把这个tem放进结果之后,tem就要清空用来存下一个可能的序列.事实上,所谓的删除操作直接由下面的tem.pop_back()完成了。这里很值得我注意!
return;
}
if(k == 0 && n > 0) return;
for(int j = i;j <= 9;++j){
tem.push_back(j);
dfs(k - 1,n - j,j + 1,tem,res);
tem.pop_back();
}
return;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: