LeetCode Algorithm 22. 括号生成
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. 括号生成相关推荐
- 【力扣LeetCode】22 括号生成
题目描述(难度中) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &qu ...
- [DFS|剪枝] leetcode 22 括号生成
[DFS|剪枝] leetcode 22 括号生成 1.题目 题目链接 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合. 示例: 输入:n = 3 输出:[& ...
- Leetcode 22. 括号生成(递归+去重)
22. 括号生成 思路: 递归+map去重: 递归函数声明: vector<string> generateParenthesis(int n); 递归出口: 当n=1时,返回{" ...
- Leetcode-笔记-22.括号生成--递归
Leetcode-笔记-22.括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例 1: 输入:n = 3 输出:["((()))& ...
- LeetCode 21合并两个有序链表22括号生成
微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- 22. 括号生成 golang 图解
题目 括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", " ...
- LeetCode 22. 括号生成(回溯/DP)
文章目录 1. 题目 2. 解题 2.1 暴力回溯 2.2 DP 1. 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结 ...
- leetcode - 22. 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())& ...
- leetcode 22. 括号生成
难度:中等 频次:62 题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 解题思路:DFS DFS注意 构造一棵树,只要遍历就行了 递归结束条件是 ...
最新文章
- UVa1346 - Songs(贪心算法)
- 论文阅读——《Robust Superpixel Tracking》
- 棱镜刘大澎:云时代的手游SDK接入
- 终于圆了天文梦!马化腾称腾讯将发布探星计划 还提到了《王者荣耀》
- 拳王虚拟项目公社:闲鱼虚拟资源玩法案例拆解,教你玩转虚拟资源,货源+方法
- JustForFly struts2标签s:generator
- UEFI原理与编程(一):环境搭建
- 串口传输文件练习与点阵汉字的字模读取与显示
- fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...
- 如何准备全国大学生电子设计大赛控制题?
- 后台任务列表 App 界面模糊处理
- word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
- SQL 中文首字母提取与自定义排序
- 人人公司启动史上最大规模校园招聘
- 微信小程序时间加法_微信小程序获取系统时间、时间戳、时间时间戳加减
- Html画组织架构图
- Ubuntu下mentohust的配置
- 使用在Photoshop上的30个纺织物纹理Ps笔刷
- mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
- pdf 转 word 软件
热门文章
- shell基础09 gawk程序(上)
- django入门三(视图)
- boost实用工具:assign库了解学习
- mysql 字符类型
- mysql 5.0存储过程学习总结
- 找出一批正整数中的最大偶数_正整数的性质 B6,C1
- 实验8.2 指针与字符串 6-2 删除字符
- 基于oracle设计与实现,基于Oracle的高校研究生招生系统设计与实现.doc
- centos配置occi环境变量_拓展学习-golang的下载、安装和环境配置教程
- 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表