题解 | #括号生成#

括号生成

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

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务