题解 | #括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

使用一个变量记录当前结果中的左括号数量:

左括号数量为0时必须加入左括号;

否则,回溯法尝试加入左括号或者右括号;

每加入一个右括号,抵消一个左括号。

class Solution:
    def generateParenthesis(self , n: int) -> List[str]:
        # write code here
        ret = []
        def dfs(curr, num_left):
            if len(curr)==n*2:
                if num_left==0:
                    ret.append(curr[:]) # 注意拷贝
                return
            if num_left>n:
                return
            if num_left==0: # 没有左括号的时候,必须添加左括号
                dfs(curr+'(', num_left+1)
            else:
                dfs(curr+'(', num_left+1) # 尝试左括号,再撤销
                dfs(curr+')', num_left-1) # 尝试右括号
            return
        dfs('', 0)
        return ret
                
全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务