LeetCode 22. Generate Parentheses--Python 解法--广度优先、深度优先解法

此文首发于我的个人博客:LeetCode 22. Generate Parentheses–Python 解法–广度优先、深度优先解法 — zhang0peter的个人博客


LeetCode题解文章分类:LeetCode题解文章集合
LeetCode 所有题目总结:LeetCode 所有题目总结


题目地址:Generate Parentheses - LeetCode


Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

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

这道题目看起来不难,只要把所有的可能性都输出即可。

可以深度优先,或者广度优先解决。

广度优先的Python解法如下,先输出 ()()()...

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        def helper(s='', left=0, n=0):
            if n == 0:
                self.res.append(s+')'*left)
                return
            if left > 0:
                helper(s+')', left-1, n)
            helper(s+'(', left+1, n-1)
        self.res = []
        helper('', 0, n)
        return self.res

深度优先解法如下,先 ((()))

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        def helper(s='', left=0, n=0):
            if n == 0:
                self.res.append(s+')'*left)
                return
            helper(s+'(', left+1, n-1)
            if left > 0:
                helper(s+')', left-1, n)
        self.res = []
        helper('', 0, n)
        return self.res
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值