算法学习打卡计划

leetcode第二十二题 ——括号生成

2019-11-29  本文已影响0人  不分享的知识毫无意义

1.题目

原题:

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例子:

给定n=3,
输出:
[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

2.解析

2.1 基本思路

这道题典型的可以递归求解,既然说到递归那么我们必须要考虑的是程序的出口问题,这个问题来看,有左括号和右括号个数分别为n,我们可以设置初始左右括号的个数值,left = n,right = n,接触条件为左右括号的个数都为0,即已经无法再添加任何一个括号了。递归还有两个技巧:

3.python代码

class Solution:
    def generateParenthesis(self, n):
        result = []
        def diguigenerate(left=0, right=0, res=''):
            if len(res) == 2*n:
               result.append(res)
               return result
            if left < n:
                diguigenerate(left+1, right, res + '(')#放一个左括号
            if left > right:
                diguigenerate(left, right+1, res + ')')
        diguigenerate()
        return result
上一篇下一篇

猜你喜欢

热点阅读