LeetCode 22 [Generate Parentheses]

原題

給定 n 對括號,請寫一個函數以將其生成新的括號組合,并返回所有組合結果。

樣例
給定 n = 3, 可生成的組合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"

解題思路

  • 求所有的組合,遞歸, backtracking
  • left,right分別代表左括號和右括號還剩幾個 - 規則就是:任何時候剩余的右括號都要大于等于左括號
  • 當left和right都等于零的時候,向result中添加一個可行解

完整代碼

class Solution(object):
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        res = []
        if n < 1:
            return res
        self.helper(n, n, "", res)
        return res
        
    def helper(self, left, right, path, res):
        if left > right:
            return 
        if left == 0 and right == 0:
            res.append(path)
        if left > 0:
            self.helper(left - 1, right, path + "(", res)
        if right > 0:
            self.helper(left, right - 1, path + ")", res)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容