Leetcode-笔记-22.括号生成--递归
Leetcode-笔记-22.括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:
输入:n = 1
输出:["()"]提示:1 <= n <= 8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
由题意得,有一个左括号必定有一个右括号与之对应,假设左括号剩余left个右括号剩余right个,当left==right时下一次必定放置左括号,因为放置右括号将会不匹配。当left<right时放置左右括号都可以。然后采用递归,因为这样放置不会出现left>right的情况,当然这种情况也是错误的。
几点注意需要说,添加括号后,要在回溯后删除。否则改变了字符串s的值,影响下面的递归。
class Solution {public:void generateParenthes(vector<string>& s_v,string&s,int left,int right){if(left==0&&right==0){s_v.push_back(s);return;}if(left==right){s.push_back('(');generateParenthes(s_v,s,left-1,right);s.pop_back();//一定要删除}else{if(left>0){s.push_back('(');generateParenthes(s_v,s,left-1,right);s.pop_back();}s.push_back(')');generateParenthes(s_v,s,left,right-1);s.pop_back();}}vector<string> generateParenthesis(int n) {vector<string> s_vector;string s;generateParenthes(s_vector,s,n,n);return s_vector;}
};
Leetcode-笔记-22.括号生成--递归相关推荐
- LeetCode Algorithm 22. 括号生成
22. 括号生成 Ideas 这是一道动态规划的题目,关于动态规划的题目我们可以从n比较小的情况下开始逐步分析. 当n=1时,["()"] 当n=2时,["()()&qu ...
- 【力扣LeetCode】22 括号生成
题目描述(难度中) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &qu ...
- Leetcode 22. 括号生成(递归+去重)
22. 括号生成 思路: 递归+map去重: 递归函数声明: vector<string> generateParenthesis(int n); 递归出口: 当n=1时,返回{" ...
- [DFS|剪枝] leetcode 22 括号生成
[DFS|剪枝] leetcode 22 括号生成 1.题目 题目链接 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合. 示例: 输入:n = 3 输出:[& ...
- LeetCode 21合并两个有序链表22括号生成
微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- 22. 括号生成 golang 图解
题目 括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", " ...
- 【LeetCode笔记】22.括号生成(Java、DFS回溯、剪枝、括号)
文章目录 题目描述 代码 & 解法 题目描述 先吐槽:括号题好恶心.. 括号有效判断需要考虑考虑 代码 & 解法 思路:把括号分开看,这道题和20.有效的括号其实是有差别的:这道题的括 ...
- leetcode 22. 括号生成
难度:中等 频次:62 题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 解题思路:DFS DFS注意 构造一棵树,只要遍历就行了 递归结束条件是 ...
- LeetCode 22. 括号生成(Generate Parentheses)
题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n =3,生成结果为: ["((()))","(()() ...
最新文章
- Java IO: 管道
- PHP 捕获全局异常
- Attempted relative import in non-package
- python开发工具排名-Python程序员必备的四款开发工具
- Android性能优化——内存泄漏优化
- 高级数据结构与算法 | LFU缓存机制(Least Frequently Used)
- 我的邮局系统,欢迎大家注册!hotxf.com
- 1185. 一周中的第几天 golang
- 音视频开发(22)---基于RTMP推送实时AAC+H264流(三)
- 京东方OLED屏幕无缘iPhone 12首批供货,因测试未通过
- SaCa DataViz 企业版 | 高性能大数据分析引擎
- linux 下搭建自己的 git 服务器以及配置多用户
- java收_收java的小程序……谢谢
- 塔科夫服务器修改器,逃离塔科夫修改器+15项
- Airtest网易自动化测试工具
- 图像信息隐藏(索引图象)
- R语言相关性分析及步骤
- DDN4.9实践 - Source版的安装
- 校友会小程序开发笔记六:校友活动聚会功能模块设计与实现
- C++(STL)学习笔记
热门文章
- Google Chrome 超详细使用教程
- Cell子刊:粘上你-细菌生长素介导的植物根部细菌定殖
- 土壤微生态文献包免费领取 | 150篇近两年高影响因子土壤微生态相关文章
- 还找不到想要的文章吗?公众号搜索方法大全
- SBB:不同植被土壤中细菌古菌的群落分布模式比较
- seaborn使用displot函数实现多面板直方图(Multi-panel)可视化:使用set_title函数自定义设置多面板直方图标题(Multi-panel histograms’ title)
- UserWarning: Label not :NUMBER: is present in all training examples
- R使用热力图(heatmap)可视化数据集
- python代码统计字符串中大写字符、小写字符、特殊字符以及数值字符出现的次数
- 梯度消失、梯度爆炸、过拟合问题之神经网络应对方案:数据预处理、批量归一化、非饱和激活函数、梯度缩放和梯度裁剪、权重初始化、提前终止、集成学习、l1l2、Dropout