zoukankan      html  css  js  c++  java
  • 刷题69——括号生成

    108.括号生成

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses

    题目描述

    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

    示例:

    输入:n = 3
    输出:[
    "((()))",
    "(()())",
    "(())()",
    "()(())",
    "()()()"
    ]

    重难点

    找出括号生成规律

    题目分析

    1. 括号分成左括号(left)和右括号(right);
    2. 根据n生成n对括号可知:left <=n ,right <= left;
    3. 写一个生成括号的函数:记录左括号,右括号的数量,并生成括号存放在res中;
    4. 边界:左括号数量不超过n,右括号数量不超过左括号数量,即left < n,right < left
    5. 当left == n && right == n时,return res;
    /**
     * @param {number} n
     * @return {string[]}
     */
    let generateParenthesis = (n) =>{
        let res = [];
        function dfs(s, left, right){
            if(left == n && right == n) return res.push(s);
            if(left < n) dfs(s+'(', left+1, right);
            if(right < left) dfs(s+')', left, right+1);
        }
        dfs('', 0, 0);
        return res;
    }
    

      

  • 相关阅读:
    是否需要有代码规范
    结对同伴作业复审
    个人作业-四则运算生成
    个人博客-week7
    个人博客作业Week3
    结对编程项目总结
    个人项目总结
    个人博客作业Week2
    第二次结对作业
    个人作业3——个人总结(Alpha阶段)
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12677417.html
Copyright © 2011-2022 走看看