Leetcode——22括號生成(遞歸)

22.給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的並且有效的括號組合

例如,給出 n = 3,生成結果爲:

示例:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

【思路】
這個題使用遞歸法,但是題目要求是有效的括號。
在這裏插入圖片描述

【實現代碼】

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> res=new ArrayList<String>();
        int left=n,right=n;
        String item="";
        generate(item,left,right,res);
        return res;
    }
    private static void generate(String item,int left,int right,List<String> res){
        //當n個左右括號都使用完了之後,則跳出結果
        if(left==0 && right==0){
            res.add(item);
            return;
        }
        //還剩下左括號個數不爲0
        if(left>0){
            generate(item+"(",left-1,right,res);
        }
        //還剩下右括號大於剩下左括號個數
        if(left<right){
            generate(item+")",left,right-1,res);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章