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+")");
        }
        
    }
}
相关推荐
不正经学生24 分钟前
C语言指针进阶:const 和野指针——给指针加锁,向野指针宣战
c语言·开发语言·c++·算法·c#
程序喵大人25 分钟前
【C++进阶】STL算法与函数对象 - 01 让算法去处理一段迭代器范围
开发语言·c++·算法·函数对象
gugucoding28 分钟前
34.【Java】I/O流(下):NIO与文件操作
java·python·nio
cui_ruicheng30 分钟前
Python数据分析(十三):Seaborn 统计可视化
开发语言·python·信息可视化·数据分析
tianyu2341 小时前
双指针循环匹配金额——打款记录与账单的自动对账算法
java·算法·双指针循环·匹配金额
YDS8291 小时前
大营销平台 —— 架构解析和抽奖流程串联
java·springboot·ddd
小贤plus1 小时前
MyBatis‑Plus IPage 分页踩坑实战:分页与全量查询兼容方案
java
Java内核笔记1 小时前
BeanRegistrar:Spring Boot 4 最被低估的新特性,彻底改变 Bean 注册方式
java·后端
还是鼠鼠1 小时前
【Spring AI智能体实战 02】Spring Boot 3.4整合Spring AI:项目创建与依赖配置
java·人工智能·spring boot·maven·spring ai