当前位置: 首页 > news >正文

【leetcode100】括号生成

1、题目描述

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

2、初始思路

2.1 思路

全排列+筛选

2.2 犯错点

全排列,时间复杂度高,且易读性较差

3 优化算法

3.1 思路

在构造的过程中直接确保括号的正确匹配:

  • 当左括号数量<n时,可以继续添加左括号;
  • 当右括号数量<左括号数量时,才可以添加右括号。

3.2 代码

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        res = []
        path = []
        def backtracking(path, left, right):
            if len(path) == 2*n:
                res.append(''.join(path.copy()))
                return
            if left<n:
                path.append('(')
                backtracking(path, left+1, right)
                path.pop()
            if right<left:
                path.append(')')
                backtracking(path, left, right+1)
                path.pop()
        backtracking(path, 0, 0)
        return res

相关文章:

  • Linux内核,mmap_pgoff在mmap.c的实现
  • MyBatis SqlSessionFactory 是如何创建的?
  • Linux上位机开发实战(x86和arm自由切换)
  • java -jar 执行基于Maven构建的Java应用的方法总结
  • 剑指 Offer II 087. 复原 IP
  • RustDesk自建远程桌面服务教程
  • Vue与Django是如何传递参数的?
  • matlab 谐波分析公式绘图
  • C语言:基于链表实现栈
  • java多线程基础
  • 深入解析 Vue 3 Teleport:原理、应用与最佳实践
  • MySQL基本语句以及表约束练习
  • 单口路由器多拨号ADSL实现方法
  • Flutter小白开发笔记
  • 自动化测试框架学习总结-hytest学习
  • OpenEuler20.3 安装 Elasticsearch7.17
  • 关于新奇的css
  • IDEA:项目结构不见了,项目文件消失解决
  • FastDVDnet:不需要显示学习运动的实时视频降噪
  • AI编写自动化测试脚本
  • 广东韶关一镇干部冲进交通事故火海救人,获授“见义勇为”奖励万元
  • 世界期待中美对话合作带来更多确定性和稳定性
  • 著名学者黄修己去世,享年90岁
  • 人民日报读者点题·共同关注:今天我们为什么还需要图书馆?
  • 梅花奖在上海|朱洁静:穿越了人生暴风雨,舞台是最好良药
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?