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

括号生成(回溯+剪枝)

22. 括号生成 - 力扣(LeetCode)

题目描述

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

样例输入

示例 1:

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

示例 2:

输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8

如下图,当n=2时,每种可能的情况都有4个字符,使用递归遍历出所有可能的情况:

剪去递归过程中不符合题意的条件,可以看出以下情况,应当进行剪枝

  • 左括号数量<右括号数量
  • 左括号数量>n

而当路径收集过程中path.size(),也就是最终的结果等于2n时,应该进行收集

题解

class Solution {
private:string path;vector<string> res;void backing(int n,int l,int r){if(l>n || l<r) return;if(path.size()==2*n){res.push_back(path);return;}path+='(';backing(n,l+1,r);path.pop_back();path+=')';backing(n,l,r+1);path.pop_back();}
public:vector<string> generateParenthesis(int n) {backing(n,0,0);return res;}
};

class Solution {
private:vector<string> res;void backing(string path,int n,int l,int r){if(l>n || l<r) return;if(path.size()==2*n){res.push_back(path);return;}backing(path+'(',n,l+1,r);backing(path+')',n,l,r+1);}
public:vector<string> generateParenthesis(int n) {backing("",n,0,0);return res;}
};

相关文章:

  • ip地址改变导致nacos无法登录的解决方法
  • 查询优化-提升子查询-UNION类型
  • 国内IP切换软件:解锁网络世界的新钥匙
  • 【八大排序】一篇文章搞定所有排序
  • 企业系统对接必知事项-请您查收
  • vmware,linux,centos7,NAT模式下的网络配置
  • 定义类强化——移动的圆
  • Composer常见错误解决
  • “直播曝光“有哪些媒体直播分流资源?
  • Java基础语法(八)| 继承
  • 基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
  • ArcGIS矢量裁剪矢量
  • SpringBoot --条件注解与属性绑定
  • Contos7 安装 Maven
  • sqlite3的安装
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 230. Kth Smallest Element in a BST
  • CSS实用技巧
  • Javascript弹出层-初探
  • JavaScript实现分页效果
  • LeetCode29.两数相除 JavaScript
  • mysql 5.6 原生Online DDL解析
  • orm2 中文文档 3.1 模型属性
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SAP云平台里Global Account和Sub Account的关系
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何设计一个微型分布式架构?
  • 如何胜任知名企业的商业数据分析师?
  • 用mpvue开发微信小程序
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • #include<初见C语言之指针(5)>
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • *上位机的定义
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 提取注释生成API文档 帮助文档
  • .net 验证控件和javaScript的冲突问题
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .Net8 Blazor 尝鲜
  • .NET框架设计—常被忽视的C#设计技巧