博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcod] Generate Parentheses 产生括号
阅读量:6088 次
发布时间:2019-06-20

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

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:

"((()))", "(()())", "(())()", "()(())", "()()()"

回溯法

复杂度

时间 O(N) 空间 O(N) 递归栈

思路

当我们放置一个新的符号时,我们有两个选择,放置左括号,或者放置右括号,但是按照题意我们最多放置n个左括号,放一个剩余可放置左括号就少一个,但剩余可放置右括号则多了一个。而对于右括号,必须前面放了一个左括号,我们才能放一个右括号。所以我们根据剩余可放置左括号,和剩余可放置右括号,代入递归,就可以求解。

代码

public class Solution {        List
res = new LinkedList
(); public List
generateParenthesis(int n) { helper(n, 0, ""); return res; } private void helper(int left, int right, String tmp){ // 如果左括号右括号都放完了,则找到一个结果 if(left == 0 && right == 0){ res.add(tmp); return; } // 对于每个位置,我们有两种选择,要么放左括号,要么放右括号 if (left > 0){ helper(left - 1, right + 1, tmp+"("); } if (right > 0){ helper(left, right - 1, tmp+")"); } }}

后续 Follow Up

Q:如果想把生成的括号加上缩进来格式化怎么办?

A:将原先if(left == 00 && right == 0)里面替换为:

int level = 0;for(int i = 0; i < tmp.length(); i++){    if(tmp.charAt(i) == '{'){        for(int k = 0; k < level; k++){            System.out.print('\t');        }        System.out.println('{');        level++;    } else {        level--;        for(int k = 0; k < level; k++){            System.out.print('\t');        }        System.out.println('}');    }}

转载地址:http://mqvwa.baihongyu.com/

你可能感兴趣的文章
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>