题解 | #括号生成#

括号生成

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
                
全部评论

相关推荐

MGlory:我当初有一个老师告诉我简历要写的简单,最好只一面,项目可以写核心的,进面了自然会问你的
点赞 评论 收藏
分享
爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务