• LeetCode 22. 括号生成 DFS


    地址 https://leetcode-cn.com/problems/generate-parentheses/

    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
    
    示例 1:
    输入:n = 3
    输出:["((()))","(()())","(())()","()(())","()()()"]
    
    示例 2:
    输入:n = 1
    输出:["()"]
     
    
    提示:
    1 <= n <= 8

    解答

    dfs 在可能的情况下 尝试填写( 与 )两种符号
    填写(的情况比较宽松 只要当前该符号使用次数不为0即可
    填写)的情况还需要额外观察填写的(个数 如果(个数比)个数少 则不能填写)

    class Solution {
    public:
        vector<string> ans;
        stack<char> s;
        int limit = 0;
        int left = 0;
        int right = 0;
        void dfs(string& s, int idx) {
            if (idx == limit) {
                ans.push_back(s);
                return;
            }
    
            if(left > 0){
                s += '('; left--;
                dfs(s, idx + 1);
                s.pop_back(); left++;
            }
    
            if (right > left && right>0) {
                s += ')'; right--;
                dfs(s, idx + 1);
                s.pop_back(); right++;
            }
    
            return;
        }
    
        vector<string> generateParenthesis(int n) {
            left = n; right = n;
            limit = 2 * n;
            string s;
            dfs(s,0);
    
            return ans;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    第四篇 kubernetes 部署EFK日志平台
    青云KubeSphere 容器平台部署教程
    第三篇 kubernetes使用Operator部署Prometheus监控
    第二篇 kubernetes 集群部署 Traefik-ingress
    第一篇 kubernetes V1.19.4 部署教程
    OpenShift强大的oc set命令详解
    kubernetes集群调度策略及调度原理
    MAC 环境变量的管理
    hackindosh 折腾
    RactNative 框架 Hippy
  • 原文地址:https://www.cnblogs.com/itdef/p/14522254.html
Copyright © 2020-2023  润新知