22. 括号生成

Ideas

这是一道动态规划的题目,关于动态规划的题目我们可以从n比较小的情况下开始逐步分析。

当n=1时,["()"]

当n=2时,["()()", “(())”]

当n=3时,["()()()", “(()())”, “()(())”, “(())()”, “((()))”]

什么意思呢?

当n=1,也就是只有一对括号时,只有一种情况。

当n=2时,其实是在只有一对括号的情况下添加一对括号,可以添加在左边,也就是"()()",可以直接在外面套一层括号,也就是"(())",添加到右边的情况就和添加到左边的情况一样的了。

同理,当n=3时,我们是在n=2的所有情况中添加一对括号,添加的形式有三种,左边、右边、外面套一层。

以此类推,如果我们知道了 i < n 时的所有情况,就可以对所有情况进行组合遍历:

f"({i = p 时的所有情况}){i = n - 1 -p 时的所有情况}"

可以把 i = p 时的所有情况 定义为p,i = n - 1 -p 时的所有情况 定义为 q。

然后就是遍历组合啦。

Code

Python

class Solution:def generateParenthesis(self, n: int) -> List[str]:total = [[""]]for i in range(1, n + 1):cur = list()  # 用于存储增加一对括号后可能生成的所有情况for j in range(i):item_p = total[j]item_q = total[i - 1 - j]for p in item_p:for q in item_q:cur.append(f"({p}){q}")total.append(list(cur))return total[n]

LeetCode Algorithm 22. 括号生成相关推荐

  1. 【力扣LeetCode】22 括号生成

    题目描述(难度中) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &qu ...

  2. [DFS|剪枝] leetcode 22 括号生成

    [DFS|剪枝] leetcode 22 括号生成 1.题目 题目链接 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合. 示例: 输入:n = 3 输出:[& ...

  3. Leetcode 22. 括号生成(递归+去重)

    22. 括号生成 思路: 递归+map去重: 递归函数声明: vector<string> generateParenthesis(int n); 递归出口: 当n=1时,返回{" ...

  4. Leetcode-笔记-22.括号生成--递归

    Leetcode-笔记-22.括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例 1: 输入:n = 3 输出:["((()))& ...

  5. LeetCode 21合并两个有序链表22括号生成

    微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...

  6. 22. 括号生成 golang 图解

    题目 括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", " ...

  7. LeetCode 22. 括号生成(回溯/DP)

    文章目录 1. 题目 2. 解题 2.1 暴力回溯 2.2 DP 1. 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结 ...

  8. leetcode - 22. 括号生成

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())& ...

  9. leetcode 22. 括号生成

    难度:中等 频次:62 题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 解题思路:DFS DFS注意 构造一棵树,只要遍历就行了 递归结束条件是 ...

最新文章

  1. UVa1346 - Songs(贪心算法)
  2. 论文阅读——《Robust Superpixel Tracking》
  3. 棱镜刘大澎:云时代的手游SDK接入
  4. 终于圆了天文梦!马化腾称腾讯将发布探星计划 还提到了《王者荣耀》
  5. 拳王虚拟项目公社:闲鱼虚拟资源玩法案例拆解,教你玩转虚拟资源,货源+方法
  6. JustForFly struts2标签s:generator
  7. UEFI原理与编程(一):环境搭建
  8. 串口传输文件练习与点阵汉字的字模读取与显示
  9. fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
  10. 如何准备全国大学生电子设计大赛控制题?
  11. 后台任务列表 App 界面模糊处理
  12. word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
  13. SQL 中文首字母提取与自定义排序
  14. 人人公司启动史上最大规模校园招聘
  15. 微信小程序时间加法_微信小程序获取系统时间、时间戳、时间时间戳加减
  16. Html画组织架构图
  17. Ubuntu下mentohust的配置
  18. 使用在Photoshop上的30个纺织物纹理Ps笔刷
  19. mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
  20. pdf 转 word 软件

热门文章

  1. shell基础09 gawk程序(上)
  2. django入门三(视图)
  3. boost实用工具:assign库了解学习
  4. mysql 字符类型
  5. mysql 5.0存储过程学习总结
  6. 找出一批正整数中的最大偶数_正整数的性质 B6,C1
  7. 实验8.2 指针与字符串 6-2 删除字符
  8. 基于oracle设计与实现,基于Oracle的高校研究生招生系统设计与实现.doc
  9. centos配置occi环境变量_拓展学习-golang的下载、安装和环境配置教程
  10. 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表