有一段时间没写了,再进leetcode发现有了中国区的网站。
题目:22. 括号生成
链接:https://leetcode-cn.com/problems/generate-parentheses/description/
给定正整数N,要求输出N对括号的所有合法组合。之前总是把一对括号一起考虑,及在N-1对括号的基础上增加一对,于是当N=4的时候少了这种情况 (())(()),后面的递归结果自然就少了一些。下面是别人的思路:
左括号和右括号分开考虑,其个数分别用left和right表示(注意起头第一个一定是左括号)。当左括号的个数left<N时,添加一个左括号,此时若右括号的个数right小于left,则可以添加一个右括号。当left>=N时,只能添加右括号。递归终止条件为left+right==2*N,此时将该组合加入结果集。
Python代码:
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
# def getans(n, res, ans):
# if n == 0:
# if res not in ans:
# ans.add(res)
#