Leetcode22括号生成(java实现)

今天分享的题目是Leetcode22括号生成,具体的题目描述如下:

本道题我们使用的解法是回溯。

解题思路:

我们主要是对括号出现的可能性进行一个收集。

我们以n=2举例子,如下图

如果想要合法,那么一定是左括号开始,并且以左括号为开始,要对不合适的进行剔除。可以思考一下,为何最后一个不符合呢?是因为左括号个数为1,右括号个数为1,然后没有以左括号开始。

上面的两种情况合法,第一种情况,左括号个数为2并且右括号个数为2.

所以要想合法的前提是,左括号个数等于右括号,左括号为开始。

具体的代码如下:

java 复制代码
class Solution {
    List<String> res = new ArrayList();
    public List<String> generateParenthesis(int n) {
    backtracking(0,0,n,"");
    return res;
}
    public void backtracking(int left,int right,int n ,String str){
        if(left<right){
            return;
        }
        //收集结果
        if(left==n&&right==n){
            res.add(str);
            return;
        }
        //补左括号,left个数加1
        if(left<n){
        backtracking(left+1,right,n,str+"(");
        }
        //补右括号,右括号数量加1
        if(left>right){
        backtracking(left,right+1,n,str+")");
        }
        
    }
}
相关推荐
会编程的土豆12 小时前
【go】 Go语言中的 defer:从入门到理解底层机制(讲透版)
开发语言·后端·golang
一只幸运猫.12 小时前
Google Mug库——一个现代的通用工具库
开发语言·python
weixin_4196583112 小时前
RabbitMQ 的高级特性
java·分布式·rabbitmq
白晨并不是很能熬夜12 小时前
【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程
java·网络·后端·网络协议·面试·rpc·java-zookeeper
民乐团扒谱机13 小时前
【附完整代码】Python爬取古筝网曲谱图片一键生成PDF(下·PDF生成与GUI篇)
开发语言·python·pdf
代码中介商13 小时前
C语言操作符深度解析:从基础到高级应用
c语言·开发语言
z小天才b13 小时前
Java 设计模式完全指南:从入门到精通
java·开发语言·设计模式
zs宝来了13 小时前
网络篇15-网络收发包应用之iptable
开发语言·网络·php
烤麻辣烫13 小时前
算法--二分搜索
java·开发语言·学习·算法·intellij-idea
编码浪子13 小时前
《安全 Rust 的边界在哪?》— 中文解读
开发语言·安全·rust