1. 程式人生 > 其它 >回溯演算法-22.括號生成

回溯演算法-22.括號生成

回溯演算法-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()
        }
    }
};