博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DFS
阅读量:6269 次
发布时间:2019-06-22

本文共 1952 字,大约阅读时间需要 6 分钟。

public class Solution {    public List
generateParenthesis(int n) { List
results = new ArrayList<>(); if (n == 0) { return results; } generate(0, 2 * n, "", results); return results; } private void generate(int level, int n, String curState, List
results) { //recursion terminstor 先写 if (level >= n) { //方法一:此处判断是否合法 if (isValid(curState)) { results.add(curState); } return; } generate(level + 1, n, curState + "(", results); generate(level + 1, n, curState + ")", results); } private boolean isValid(String s) { char[] c = s.toCharArray(); Stack stack = new Stack(); for (int i = 0; i < c.length; i++) { if(c[i] == ')' && !stack.isEmpty()) { stack.pop(); } else if (c[i] == '(') { stack.push(c[i]); } else { return false; } } if (stack.isEmpty()) { return true; } return false; }}
View Code

O(T)有问题

应该每步进行判断。

public class Solution {    public List
generateParenthesis(int n) { List
results = new ArrayList<>(); if (n == 0) { return results; } gen(n, n, "", results); return results; } private void gen(int left, int right, String cur, List
results) { if (left == 0 && right == 0) { results.add(cur); } if (left > right) { return; } if (left > 0) { gen(left - 1, right, cur + '(', results); } if (right > 0 ) { gen(left, right - 1, cur + ')', results); } }}
View Code

思路:先有左括号,再有右括号。

转载于:https://www.cnblogs.com/yunyouhua/p/7099305.html

你可能感兴趣的文章
remove-duplicates-from-sorted-list I&II——去除链表中重复项
查看>>
c++ 网络库
查看>>
Linux 格式化扩展分区(Extended)
查看>>
linux echo命令
查看>>
nginx 内置变量大全(转)
查看>>
lakala反欺诈建模实际应用代码GBDT监督学习
查看>>
java 解析excel工具类
查看>>
Google FireBase - fcm 推送 (Cloud Messaging)
查看>>
BBS论坛(二十七)
查看>>
html DOM 的继承关系
查看>>
装饰器的邪门歪道
查看>>
Dubbo常用配置解析
查看>>
【转】C#解析Json Newtonsoft.Json
查看>>
macports的安装及常用命令
查看>>
(转)使用C#开发ActiveX控件
查看>>
spring mvc 基于注解 配置默认 handlermapping
查看>>
半小时学会上传本地项目到github
查看>>
Android学Jni/Ndk 开发记录(一)
查看>>
Linux Tcl和Expect的安装
查看>>
WPF中的依赖项属性(转)
查看>>