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

2025年- H73-Lc181--22.括号生成(回溯,组合)--Java版

1.题目描述
在这里插入图片描述

2.思路
在这里插入图片描述
在这里插入图片描述
(1)终止条件:如果当前字符串长度为 2 * n,说明括号已经填满(n 个左括号和 n 个右括号),加入结果列表并返回。
(2)如果还没用完所有的左括号(open < n),就可以继续加左括号。递归调用:左括号数量加 1,继续构造。回溯关键步骤:撤销上一步加的括号,回到上一个状态,尝试其他组合。
(3)如果当前右括号数量比左括号少(close < open),则可以加一个右括号。
与左括号逻辑类似:加右括号 → 递归 → 撤销(回溯)。
(4)new stringbuffer()是可变字符串长度

3.代码实现

import java.util.ArrayList;
import java.util.List;public class H22 {public List<String> generateParenthesis(int n) {//保存括号字符串的结果List<String> result=new ArrayList<>();//可变字符串,存储回溯过程中的括号StringBuffer sb=new StringBuffer();//第1个0代表左括号的数量,第2个0代表右括号的数量,n代表括号对的数量backTracking(result,sb,0,0,n);return result;}public void backTracking(List<String> result,StringBuffer cur,int left,int right,int n){if(cur.length()==n*2){result.add(cur.toString());}//先拿左括号和要生成的括号对数进行比较,之后左括号填满之后,开始补齐右括号,如果右括号数量小于左括号数量,补齐右括号if(left<n)//如果左括号小于输入的括号对数{cur.append('(');backTracking(result,cur,left+1,right,n);cur.deleteCharAt(cur.length()-1);//cur.length()-1是整数,cur是可变字符串,所以要用到cur.deleteCharAt(index)}if(right<left){//右括号数量少(右括号小于左括号),开始补齐右括号cur.append(')');backTracking(result,cur,left,right+1,n);cur.deleteCharAt(cur.length()-1);}}public static void main(String[] args){H22 test=new H22();int n=3;List<String> ans=test.generateParenthesis(n);System.out.print(ans);}
}
http://www.lqws.cn/news/186445.html

相关文章:

  • Git仓库的创建
  • 2025/6/6—halcon知识点总结
  • c++ set与multiset的介绍
  • SOC-ESP32S3部分:32-LVGL显示框架
  • 【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
  • 从零实现STL哈希容器:unordered_map/unordered_set封装详解
  • 在 Kali 上打造渗透测试专用的 VSCode 环境
  • 单芯片电流采用电路分享
  • 基于nacos2.5.1的MCP服务端微服务项目开发环境配置简介
  • Komiko 视频到视频功能炸裂上线!
  • Kubernetes 从入门到精通-label标签
  • Caliper 配置文件解析:config.yaml
  • 贝叶斯深度学习!华科大《Nat. Commun.》发表BNN重大突破!
  • 04 Deep learning神经网络编程基础 梯度下降 --吴恩达
  • 一个WebRTC 分辨率动态爬升问题记录与解决过程
  • Kubernetes指标实现有效的集群监控和优化
  • 【单片机期末】串行口循环缓冲区发送
  • 单片机内部结构基础知识 FLASH相关解读
  • Flask 核心概念速览:路由、请求、响应与蓝图
  • 深入理解二叉搜索树:原理到实践
  • LeetCode 热题 100 74. 搜索二维矩阵
  • 【Linux基础知识系列】第十四篇-系统监控与性能优化
  • 使用VSCode开发Django指南
  • npm install的原理
  • 自制喜悦字贴
  • 华为×小鹏战略合作:破局智能驾驶深水区的商业逻辑深度解析
  • Qt(part1)Qpushbutton,信号与槽,对象树,自定义信号与槽,lamda表达式。
  • 使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
  • QuaggaJS用法详解
  • vue生成二维码图片+文字说明