leetcode 22. 括號生成

給出 n 表明生成括號的對數,請你寫出一個函數,使其可以生成全部可能的而且有效的括號組合。python

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

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

 

回溯法函數

python能夠函數裏定義函數spa

class Solution(object):
    def generateParenthesis(self, N):
        ans = []
        def backtrack(S = '', left = 0, right = 0):
            if len(S) == 2 * N:
                ans.append(S)
                return
            if left < N:
                backtrack(S+'(', left+1, right)
            if right < left:
                backtrack(S+')', left, right+1)

        backtrack()
        return ans
相關文章
相關標籤/搜索