zoukankan      html  css  js  c++  java
  • --算法恩仇录--实战篇--力扣(LeetCode)--022-括号生成--

    这道题直接递归模拟添加括号。

    注意不要放置过多的右括号。右括号和左括号是一一对应的。

    代码:

    /**
     * @param {number} n
     * @return {string[]}
     */
    //使用递归
    //每一个括号生成都是一一对应的关系
    let list = [];
    function traval(l, r, n, s){ //左括号个数,右括号个数,总的括号数量,当前生成的字符串
        if(l === r& l===n){      //如果左右括号都使用完毕,则结束递归,返回生成的字符串
            list.push(s);
            return;
        }
        if(l > r){              // 如果已经放置的左括号数量比右括号多,则可以选择放置一个右括号
            traval(l, r+1, n, s+')');
        }
        if(l < n){             //如果左括号没有放完,则可以继续放置一个左括号
            traval(l+1, r, n, s+'(');
        }
    
    }
    var generateParenthesis = function(n) {
        list = [];
        traval(0,0,n,'');
        return list;
    };

    结果为:

    执行用时:88 ms, 在所有 JavaScript 提交中击败了40.06%的用户
    内存消耗:37.9 MB, 在所有 JavaScript 提交中击败了86.12%的用户
     
    吐槽:写前端页面写多了,太久没有写递归,脑子有点笨,一开始竟然没写出来。。。
    离大侠再近一步!
  • 相关阅读:
    【VUE】父子组件通信
    【mysql】密码重设
    Joomla 3.2.0
    浅谈内网渗透
    使用Fiddler的X5S插件查找XSS漏洞
    Asp文件锁定脚本
    php内网探测脚本&简单代理访问
    Linux关闭休眠和屏保模式
    不重启修改计算机名【批处理】
    mimikatz不反弹读取密码
  • 原文地址:https://www.cnblogs.com/Samo-Li/p/13602472.html
Copyright © 2011-2022 走看看