leetcode22.括号生成

回溯算法-22.括号生成

题目

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

有效括号组合需满足:左括号必须以正确的顺序闭合。

用例

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

求解

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    const res = []
    const path = []
    bracket_generating(n,n)

    return res
    function bracket_generating(left_num,right_num){
        if(left_num==0&&right_num==0){
            res.push(path.join(""));
            return
        }
        if(left_num==right_num){
            path.push("(")
            bracket_generating(left_num-1,right_num)
            path.pop()
        }
        if(left_num<right_num){
            if(left_num!=0){
               path.push("(")
                bracket_generating(left_num-1,right_num)
                path.pop() 
            }
            path.push(")")
            bracket_generating(left_num,right_num-1)
            path.pop()
        }
    }
};
posted @ 2021-10-29 20:03  BONiii  阅读(38)  评论(0)    收藏  举报