leetcode题库 22.括号生成

题意: 数字 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)

猜你喜欢

转载自blog.csdn.net/weixin_56336619/article/details/115055398