LeetCode22. 括号生成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jaster_wisdom/article/details/80586897

题目大意:给定n表示括号的对数,输出所有有效的括号的组合

题目分析:递归求解,用leftnum和rightnum分别表示剩余可用的左括号和右括号的个数,当使用了一个( ,则leftnum-1; 同理,使用了一个 ),则rightnum-1。 当leftnum>0时,可用( 填充; 当leftnum<rightnum,并且rightnum>0时,表示当前可用 )填充,直到leftnum和rightnum都等于0为止。

代码展示:

class Solution:
    def generateParenthesis(self, n):
        res = []
        leftnum = n
        rightnum = n
        string = ""
        self.generate(leftnum,rightnum,string,res)
        return res
    
    def generate(self,leftnum,rightnum,string,res):
        if leftnum==0 and rightnum==0:
            res.append(string)
        if leftnum>0:
            self.generate(leftnum-1,rightnum,string+"(",res)
        if leftnum<rightnum and rightnum>0:
            self.generate(leftnum,rightnum-1,string+")",res)

展开阅读全文

没有更多推荐了,返回首页