LeetCode 22. 括号生成(Generate Parentheses)
题目描述
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n =3,生成结果为:
["((()))","(()())","(())()","()(())","()()()" ]
解题思路
利用回溯的思想递归的生成括号。具体来说记录当前剩余左括号数left,剩余右括号数right,当前的生成括号字符串s,进行如下操作:
- 若left为0,说明左括号已全部打印完,所以将剩余的右括号全部打印出来并加入到结果集
- 若right>left,即当前字符串中的左括号还有未匹配到的右括号,此时有两种选择:继续打印一个左括号或者匹配打印一个右括号,再对这两种选择分别递归判断
- 若left和right相等,即当前字符串中的左括号全部有匹配到的右括号,此时只能再打印一个左括号,再递归判断
代码
1 class Solution { 2 public: 3 vector<string> generateParenthesis(int n) { 4 vector<string> res; 5 generate(n, n, "", res); 6 return res; 7 } 8 void generate(int left, int right, string s, vector<string> &res){ 9 if(left == 0){ 10 while(right--) 11 s += ")"; 12 res.push_back(s); 13 } 14 else if(right > left){ 15 generate(left-1, right, s+"(", res); 16 generate(left, right-1, s+")", res); 17 } 18 else 19 generate(left-1, right, s+"(", res); 20 } 21 };
转载于:https://www.cnblogs.com/wmx24/p/9093758.html
LeetCode 22. 括号生成(Generate Parentheses)相关推荐
- [DFS|剪枝] leetcode 22 括号生成
[DFS|剪枝] leetcode 22 括号生成 1.题目 题目链接 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合. 示例: 输入:n = 3 输出:[& ...
- Leetcode 22. 括号生成(递归+去重)
22. 括号生成 思路: 递归+map去重: 递归函数声明: vector<string> generateParenthesis(int n); 递归出口: 当n=1时,返回{" ...
- 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注意 构造一棵树,只要遍历就行了 递归结束条件是 ...
- Leetcode 22.括号生成 (每日一题 20210623)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合.示例 1:输入:n = 3 输出:["((()))","(()())&quo ...
- LeetCode 22. 括号生成(回溯+剪枝)
题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 思路 详见链接 代码 from typing import List class Solution ...
- leetcode 22.括号生成
题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()( ...
- LeetCode 22 括号生成
https://leetcode-cn.com/problems/generate-parentheses/ 解决方案 class Solution {List<String> ans = ...
最新文章
- PTA基础编程题目集-6-13 折半查找
- linux 查看开放的端口_如何在 Linux 中查看正在使用的端口
- java web 项目启动_Java web项目启动Tomcat报错解决方案
- C#解密出生日期【C#】
- Linux流量监控工具 - iftop
- oracle database link创建
- 快准狠才叫爽!六款智能电视语音识别大比拼
- Mysql 锁定 读情况
- 从泰勒展开到牛顿迭代
- svg 地图_用于Power BI的SVG省市地图(带数据标签,含下载)
- 错误: 实例 ruiy 执行所请求操作失败,实例处于错误状态。: 请稍后再试 [错误: #39;ascii#39; codec can#39;t decode byte 0xe6 in po...
- PHP基础: CLI模式开发不需要任何一种Web服务器
- 怎样把pdf格式转换成jpg
- 模拟计算 |“五重解读”带你玩转CO2RR描述符-科学指南针
- 2021年河南省高考数据统计:河南省参加考试人数占报名人数的83.7%,本土156所高校(1所211大学)
- 傅里叶级数展开及系数项求解
- python软件工程师面试题目及答案_Python面试题及答案汇总整理(2019版)
- 虚幻4 虚拟漫游场景 制作过程
- jxl可以操作excel2007吗?可以
- 枭龙智能眼镜 XLOONG X100 Glass拆解