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

22. 括号生成

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

解题思路:
我觉得本质上来说,就是从数组中[‘(’, ‘)’]可重复地选择元素,生成一个长度为2n的括号组合。为了使这个括号组合是有效的,那么在选择的过程中就有一些约束:
1、左括号的数量不能超过n。
2、左括号的数量不能小于有括号的数量。
3、当左括号和有括号的数量都等于n时,就是收获结果的时候。
4、因为我们的path是使用的字符数组,直接覆盖掉了之前的值,所以不用恢复现场。只用恢复cnt1和cnt2即可。

class Solution {private List<String> result = new ArrayList<>();private char[] path;private static final char[] ch = new char[]{'(', ')'};public List<String> generateParenthesis(int n) {path = new char[2*n];backtrack(n, 0, 0);return result;}private void backtrack(int n, int cnt1, int cnt2){if(cnt1 == n && cnt2 == n){result.add(new String(path));return;}if(cnt1 > n || cnt1 < cnt2){return ;}for(char c : ch){path[cnt1 + cnt2] = c;if(c == '('){cnt1++;}else{cnt2++;}backtrack(n, cnt1, cnt2);if(c == '('){cnt1--;}else{cnt2--;}}}
}

相关文章:

  • AI编程工具深度对比:腾讯云代码助手CodeBuddy、Cursor与通义灵码
  • ubuntu20.04如何给appImage创建快捷方式
  • EXILIUM×亚矩云手机:重构Web3虚拟生存法则,开启多端跨链元宇宙自由征途
  • 【JeecgBoot AIGC】打造智能AI应用
  • 51c~嵌入式~PLC~三菱~合集1
  • 记dwz(JUI)前端框架使用之--服务端响应提示框
  • 如何在x86_64 Linux上部署Android Cuttlefish模拟器运行环境
  • Spring Cloud Feign 整合 Sentinel 实现服务降级与熔断保护
  • python + opencv实现简单的文字水印
  • 【CSS 行高陷阱:如何避免文本被截断问题】
  • 【RESTful接口设计规范全解析】URL路径设计 + 动词名词区分 + 状态码 + 返回值结构 + 最佳实践 + 新手常见误区汇总
  • Day43 复习日 图像数据集——CNN
  • 数据结构进阶 - 第一章 绪论
  • linux cp与mv那个更可靠
  • 2-深度学习挖短线股-2-训练数据计算
  • Elasticsearch 中的精确搜索与模糊搜索
  • 从手机随拍到标准扫描件:AI如何智能校正证件照片(Python+OpenCV)
  • 机器人系统ROS中包内节点启动详解和实战示例
  • Maven配置本地仓库、中央仓库、公司私有仓库
  • 笔记04:层叠的定义及添加