題目描述
給定兩個整數?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;} };