难度:中等
题目描述:
思路总结:暴力法就是用递归生成一个个序列,然后进行判断,所以时间复杂度很高O(2^2n*n),n=9以上就会超时,运行时间成指数级增长。能过是因为只有8个用例,输入肯定是小于9的。因此这题被化为中等题。
题解一:(暴力法)
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
#思路:暴力法。递归生成串+验证函数\
def generate(A):
#递归出口
if len(A) == 2*n:
if isValid(A):
res.append("".join(A))
else:
A.append("(")
generate(A)
A.pop()
A.append(")")
generate(A)
A.pop()
def isValid(A): #(+1,)-1,如果某一时刻为负,那么返回False
count = 0
for c in A:
if c == "(":count += 1
else :count -= 1
if count < 0:return False
return count == 0 #此处需要注意
res = []
generate([])
return res
题解一结果:
题解二:(回溯法)
题解二结果:
题解三:(闭合数)
题解三结果:
题解四:(动态规划)
题解四结果: