给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
示例 1:
输入:n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
1 <= n <= 20
1 <= k <= n
先定好了从小到大的顺序,确定每次递归的取的数的范围。
注意边界值和vector用法
ac代码 c++:class Solution {
public:
void recombine(vector<vector<int> > &result,int now,int k,int n,int value,vector<int> &x)
{
if(now==k+1)
{
result.push_back(x);
return;
}
for(int i=value+1;i<=now+n-k;i++)
{
x.push_back(i);
recombine(result,now+1,k,n,i,x);
x.pop_back();
}
}
vector<vector<int> > combine(int n, int k) {
int size=1;
vector<vector<int> > result;
vector<int> current;
recombine(result,1,k,n,0,current);
return result;
}
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。
商业转载请联系官方授权,非商业转载请注明出处。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)