题目描述
给定两个整数 n
和 k
,返回范围 [1, n]
中所有可能的 k
个数的组合。
你可以按 任何顺序 返回答案。
示例 1:
输入:n = 4, k = 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]
示例 2:
输入:n = 1, k = 1 输出:[[1]]
提示:
1 <= n <= 20
1 <= k <= n
解决方案:
1、确定函数返回值:void(单纯处理参数)
2、确定参数类型:引入的条件
3、首行给出结束条件:个数count == 题给要求的 k 即可
4、单层循环逻辑:加入后一个数,作为组合
函数源码:
class Solution { public:void back(vector<vector<int>>&ans,vector<int>&comb,int& count,int pos,int n,int k){if(count==k){ans.push_back(comb);return;} for(int i=pos;i<=n;i++){comb[count++]=i;back(ans,comb,count,i+1,n,k);//递归迭代 comb[1]count--; //还原 comb[0]}}vector<vector<int>> combine(int n, int k) {vector<vector<int>>ans;vector<int> comb(k,0);int count=0;back(ans,comb,count,1,n,k);return ans;} };