一刷~
数字
n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的括号组合。
思路:
递归,考虑手动生成有效括号的逻辑。记录当前可能组合中左括号的个数left和剩余可用括号对数n,1.当left不为0时,加一个右括号,n不变,继续下一个 递归;2.当n不为0时,为当前可能组合加一个左括号,left+1, n-1,继续下一个递归;3.当n=0时,考虑left是否为0,不为0,则在当前可能组合右侧加上left个左括号。
改变递归调用方式,可能更优雅- -
python
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
res = []
self.generate(res, '', 0, n)
return res
def generate(self, res, s, left, n):
if n == 0:
if left:
while left:
s += ')'
left -= 1
res.append(s)
return
if left:
self.generate(res, s+')', left-1, n)
self.generate(res, s+'(', left+1, n-1)