说明

地址: 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:["((()))","(()())","(())()","()(())","()()()"
]

解法

解析:
生成有效括号,满足如下条件

  1. 左括号个数left要大于等于右括号数right, 也就是必须 right>left才能添加右括号。
  2. 左右括号剩余数要大于0.
  3. 回溯退出条件为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相关推荐

  1. [CareerCup] 9.6 Generate Parentheses 生成括号

    9.6 Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-p ...

  2. 算法实验二 【八皇后问题】(回溯算法)

    算法实验二 [八皇后问题](回溯算法) 1007.8皇后问题 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 输出8皇后问题所有结果. 输入 没有输入. 输出 每个结果第一行是 ...

  3. 算法实验二 【踩气球】(回溯算法)

    算法实验二 [踩气球](回溯算法) 1142.踩气球 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 六一儿童节,小朋友们做踩气球游戏,气球的编号是1-100,两位小朋友各踩了 ...

  4. Java数据结构与算法(二)

    Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...

  5. RRT路径规划算法在二维仿真环境中的应用 -- Python代码实现

    在上一节中,介绍了 RRT 算法的原理,这一节将一步步实现 RRT 路径规划算法在二维环境中的路径规划,来进一步加深对 RRT 算法的理解. 二维环境的搭建 我们将搭建下图所示的二维环境,绿色点为起点 ...

  6. Dijkstra 路径规划算法在二维仿真环境中的应用 -- Python代码实现

    在上一节中,介绍了 Dijkstra 算法的原理以及在图中的应用,这一节将一步步实现 Dijkstra 路径规划算法在二维环境中的路径规划,来进一步加深对 Dijkstra 算法的理解. 所需要用到的 ...

  7. 机器学习:K-近邻算法(二)约会网站配对效果

    目录 K-近邻算法实战(二):约会网站配对效果判断 实战 1.背景介绍 2.准备数据:数据分类 3.分析数据:数据可视化 4.准备数据:数据归一化 5.测试算法:验证分类器 6.使用算法:构建完整可用 ...

  8. c语言随机prim算法的迷宫生成,Prim算法生成迷宫

    初始化地图 function initMaze(r,c){ let row = new Array(2 * r + 1) for(let i = 0; i < row.length; i++){ ...

  9. 【算法系列 二】Stack

    为什么80%的码农都做不了架构师?>>>    栈应用的场景: 1.括号问题 2.后缀表达式 3.深度优先遍历 4.保存现场 1. 给定字符串,仅由"()[]{}" ...

  10. java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)

    2D凸多边形碰撞检测算法(二) - GJK(上) 原理 在 Narrow Phase 精细碰撞检测中,除了 SAT ,另外一个就是 GJK(Gilbert–Johnson–Keerthi)算法.它足够 ...

最新文章

  1. Error writing file '/tmp/...' (Errcode: 28)
  2. LAMMP源码环境搭建
  3. asp.net ajax1.0基础回顾(五):调用ASMX(WebService)
  4. 原理简介_消息通信的利器MQTT协议简介及协议原理
  5. 60、date的使用
  6. 小程序转h5之后 vant文件查找失败:_你还在使用原生开发小程序吗
  7. 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
  8. 计算机应用软件安装教程,计算机应用与网基础教程 常用软件安装.ppt
  9. 全国计算机office二级选择题,全国计算机二级msoffice选择题汇总含答案
  10. HDU 1024 Max Sum Plus Plus
  11. 网络---NAT技术与代理服务器调研
  12. Dev-Cpp下载及使用教程
  13. 如何解决jsp中文乱码的问题
  14. python nlpir_中文分词工具--NLPIR/ICTCLAS的Python版本使用
  15. 麻木的IT公民:293个公司人压力和心理调查
  16. plc通过无线通讯连接服务器,PLC无线通讯
  17. Vue npm install失败报错errno -4058
  18. 12/27复习有感--整环的整除性
  19. 在亚马逊网上注册kindle 3及下载免费电子图书的步骤
  20. H3C 无线优化经验

热门文章

  1. 断电MySQL起不来_急求mysql 断电后无法启动解决方法!!!!
  2. 元素偏移量offset系列(附实例)
  3. mongodb driver c#语法
  4. 自学编程,如何找到自己的第一份程序员工作?
  5. js中去除字符串中所有的html标签
  6. GitHub上常用命令(工作中几乎每天用到的命令)
  7. 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示...
  8. 免费制作gif图片工具
  9. 20款最优秀的JavaScript编辑器
  10. 使用基于轮询的SQL数据缓存依赖