【LeetCode】Generate Parentheses

Description

Generate Parentheses

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Code

class Solution(object):
    def generateParenthesis(self, n):
        rst = []
        def generate(lcnt, rcnt, str): # lcnt和rcnt是用过的左右括号数量,str是目前的生成序列
            if lcnt + rcnt == 2 * n:
                rst.append(str)
                return;
            if lcnt < n:
                generate(lcnt+1, rcnt, str+'(')
            if rcnt < lcnt:
                generate(lcnt, rcnt + 1, str+')')
        generate(0, 0, '')
        return rst

Note

  1. 思路
        需要想明白一件事,在生成序列的任意位置之前,只要右括号不多于左括号,那么就是正确的序列!
       
  2. python中变量作用域
        一个函数中定义的变量是local的,函数之外不能直接访问;但如果把函数中的变量定义为global的,那么就可以在函数外直接访问。
       
  3. 函数中定义函数
        关于这点我还没太搞明白, 因为没有用过闭包、decorator等,所以对这些概念不太了解。
       以上的代码中,需要注意的是在generateParenthesis()函数中定义的generate()函数,不必在参数中写上self,调用时也不用通过self。据说python中万物皆对象,函数也是如此。因为generate()这个函数并没有被作为返回值返回,所以之后就无法从外部访问了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值