算法:回溯二 生成有效括号对Generate Parentheses
说明
地址: https://leetcode.com/problems/generate-parentheses/
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:["((()))","(()())","(())()","()(())","()()()"
]
解法
解析:
生成有效括号,满足如下条件
- 左括号个数
left
要大于等于右括号数right
, 也就是必须right>left
才能添加右括号。 - 左右括号剩余数要大于0.
- 回溯退出条件为
if (left == 0 && right == 0)
package backtracking;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;// https://leetcode.com/problems/generate-parentheses/
public class GenerateParentheses {public static void main(String[] args) {GenerateParentheses obj = new GenerateParentheses();List<String> result = obj.generateParenthesis(3);System.out.println("result > " + Arrays.toString(result.toArray()));}public List<String> generateParenthesis(int n) {List<String> result = new ArrayList<>();if (n <= 0) {return result;}helper(result, "", n, n);return result;}public void helper(List<String> result, String combine, int left, int right) {//exitif (left == 0 && right == 0) {result.add(combine);return;}if (left > 0) {helper(result, combine + '(', left - 1, right);}if (right > left) {helper(result, combine + ')', left, right - 1);}}
}
代码下载
https://github.com/zgpeace/awesome-java-leetcode/blob/master/code/LeetCode/src/backtracking/GenerateParentheses.java
算法:回溯二 生成有效括号对Generate Parentheses相关推荐
- [CareerCup] 9.6 Generate Parentheses 生成括号
9.6 Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-p ...
- 算法实验二 【八皇后问题】(回溯算法)
算法实验二 [八皇后问题](回溯算法) 1007.8皇后问题 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 输出8皇后问题所有结果. 输入 没有输入. 输出 每个结果第一行是 ...
- 算法实验二 【踩气球】(回溯算法)
算法实验二 [踩气球](回溯算法) 1142.踩气球 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 六一儿童节,小朋友们做踩气球游戏,气球的编号是1-100,两位小朋友各踩了 ...
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
- RRT路径规划算法在二维仿真环境中的应用 -- Python代码实现
在上一节中,介绍了 RRT 算法的原理,这一节将一步步实现 RRT 路径规划算法在二维环境中的路径规划,来进一步加深对 RRT 算法的理解. 二维环境的搭建 我们将搭建下图所示的二维环境,绿色点为起点 ...
- Dijkstra 路径规划算法在二维仿真环境中的应用 -- Python代码实现
在上一节中,介绍了 Dijkstra 算法的原理以及在图中的应用,这一节将一步步实现 Dijkstra 路径规划算法在二维环境中的路径规划,来进一步加深对 Dijkstra 算法的理解. 所需要用到的 ...
- 机器学习:K-近邻算法(二)约会网站配对效果
目录 K-近邻算法实战(二):约会网站配对效果判断 实战 1.背景介绍 2.准备数据:数据分类 3.分析数据:数据可视化 4.准备数据:数据归一化 5.测试算法:验证分类器 6.使用算法:构建完整可用 ...
- c语言随机prim算法的迷宫生成,Prim算法生成迷宫
初始化地图 function initMaze(r,c){ let row = new Array(2 * r + 1) for(let i = 0; i < row.length; i++){ ...
- 【算法系列 二】Stack
为什么80%的码农都做不了架构师?>>> 栈应用的场景: 1.括号问题 2.后缀表达式 3.深度优先遍历 4.保存现场 1. 给定字符串,仅由"()[]{}" ...
- java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)
2D凸多边形碰撞检测算法(二) - GJK(上) 原理 在 Narrow Phase 精细碰撞检测中,除了 SAT ,另外一个就是 GJK(Gilbert–Johnson–Keerthi)算法.它足够 ...
最新文章
- Error writing file '/tmp/...' (Errcode: 28)
- LAMMP源码环境搭建
- asp.net ajax1.0基础回顾(五):调用ASMX(WebService)
- 原理简介_消息通信的利器MQTT协议简介及协议原理
- 60、date的使用
- 小程序转h5之后 vant文件查找失败:_你还在使用原生开发小程序吗
- 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
- 计算机应用软件安装教程,计算机应用与网基础教程 常用软件安装.ppt
- 全国计算机office二级选择题,全国计算机二级msoffice选择题汇总含答案
- HDU 1024 Max Sum Plus Plus
- 网络---NAT技术与代理服务器调研
- Dev-Cpp下载及使用教程
- 如何解决jsp中文乱码的问题
- python nlpir_中文分词工具--NLPIR/ICTCLAS的Python版本使用
- 麻木的IT公民:293个公司人压力和心理调查
- plc通过无线通讯连接服务器,PLC无线通讯
- Vue npm install失败报错errno -4058
- 12/27复习有感--整环的整除性
- 在亚马逊网上注册kindle 3及下载免费电子图书的步骤
- H3C 无线优化经验
热门文章
- 断电MySQL起不来_急求mysql 断电后无法启动解决方法!!!!
- 元素偏移量offset系列(附实例)
- mongodb driver c#语法
- 自学编程,如何找到自己的第一份程序员工作?
- js中去除字符串中所有的html标签
- GitHub上常用命令(工作中几乎每天用到的命令)
- 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示...
- 免费制作gif图片工具
- 20款最优秀的JavaScript编辑器
- 使用基于轮询的SQL数据缓存依赖