题意: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
样例1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
- 自己写了一个很糟糕的模拟,面向测试样例debug的编程编不下去了
- 去评论区学习了一个很简洁的暴力
在n-1的结果集合中的所有字符串的各个位置添加一个‘()'作为新串
- 用set给结果去重
- 题目数据规模是1<=n<=8
- n=8时算法的时间复杂度是8788次 是1e3 ,n=9时33098
- n=10时已经是1e5了hhhh
- 但是 过过过 过了再说!
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result = {
''}
for i in range(n):
temp = set()
for s in result: # 在上一次的结果的所有字符串的各个位置上插入'()'
for j in range(len(s) + 1):
temp.add(s[:j] + '()' + s[j:])
result = temp
return list(result)