zoukankan      html  css  js  c++  java
  • LeetCode 77. 组合


    我自己是通过深度优先搜索实现的,虽然效率不高但是思路很简单

    class Solution {
    public:
        vector<vector<int>> combine(int n, int k) {
            vector<vector<int> > v;
            DFS(1,v,n,k);
            return v; 
        }
    private:
        vector<int> temp;
        void DFS(int index,vector<vector<int> > &v,int n, int k){
            if(temp.size()==k){
                v.push_back(temp);
                return;
            }
            if(index>n||temp.size()>k) return;
            temp.push_back(index);
            DFS(index+1,v,n,k);
            temp.pop_back();
            DFS(index+1,v,n,k);
        }
    

    官方提供了一个字典序的方法



    class Solution {
    public:
        vector<int> temp;
        vector<vector<int>> ans;
    
        vector<vector<int>> combine(int n, int k) {
            // 初始化
            // 将 temp 中 [0, k - 1] 每个位置 i 设置为 i + 1,即 [0, k - 1] 存 [1, k]
            // 末尾加一位 n + 1 作为哨兵
            for (int i = 1; i <= k; ++i) {
                temp.push_back(i);
            }
            temp.push_back(n + 1);
            
            int j = 0;
            while (j < k) {
                ans.emplace_back(temp.begin(), temp.begin() + k);
                j = 0;
                // 寻找第一个 temp[j] + 1 != temp[j + 1] 的位置 t
                // 我们需要把 [0, t - 1] 区间内的每个位置重置成 [1, t]
                while (j < k && temp[j] + 1 == temp[j + 1]) {
                    temp[j] = j + 1;
                    ++j;
                }
                // j 是第一个 temp[j] + 1 != temp[j + 1] 的位置
                ++temp[j];
            }
            return ans;
        }
    };
    
    作者:LeetCode-Solution
    链接:https://leetcode-cn.com/problems/combinations/solution/zu-he-by-leetcode-solution/
    来源:力扣(LeetCode)
    
  • 相关阅读:
    Linux system basic 2 + add kernel for Jupyter
    Linux package installation: deb and rpm
    classification tips 01: npy file
    how to activate XMind8 to pro version.
    Linux system 初步
    try_except_finally
    Postgresql Json Sql
    python package install error and little code bugs
    小程序用户操作事件
    套数据操作步骤
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13634665.html
Copyright © 2011-2022 走看看