Leetcode, 組合序列生成

給定一個n和k,給出c_{n}^k的所有組合。

例:給定n=4,k=2,輸出,

[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

一下是C++實現。

class Solution {
public:
    vector<vector<int> > combine(int n, int k) {
        vector<vector<int> > rvl;
        if(n <= 0 || k <= 0) return rvl;
        if(n == k) {
            vector<int> vec;
            for(int i = 0; i < n; i++){
                vec.push_back(i+1);
            }
            rvl.push_back(vec);
            return rvl;
        }
        if(k == 1){
            for(int i = 0; i < n; i++){
                vector<int> vec;
                vec.push_back(i + 1);
                rvl.push_back(vec);
            }
           return rvl;
        }
        
        //include n
        vector<vector<int> > vec1 = combine(n - 1, k - 1);
        for(int i = 0; i < vec1.size(); i++){
            vec1[i].push_back(n);
        }
        if(vec1.size() > 0) rvl.insert(rvl.end(), vec1.begin(), vec1.end());
        //not include n
        vector<vector<int> > vec2 = combine(n - 1, k);
        if(vec2.size() > 0) rvl.insert(rvl.end(), vec2.begin(), vec2.end());
        return rvl;
    }
};


發佈了50 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章