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+")");
        }
        
    }
}
相关推荐
IT枫斗者枫哥6 小时前
Java 接口超时后,重试为什么会多建一条任务?
java
用户3126874877206 小时前
CAS 到底是怎么保证原子性的?从 Unsafe 到 VarHandle 的演进
java
Zane19946 小时前
线上突然OOM,你的排查顺序是先看日志还是先重启
java·后端
会飞的拖把6 小时前
Python 多任务编程:并发、进程、线程与线程安全详解
开发语言·python
君顾16 小时前
折扣卡 CPS 小程序定制:从业务流程到系统架构的实践指南
java·开发语言·折扣卡
见不散6 小时前
GPT-5.6 Luna (Batch) 批量处理能力深度评测
java·gpt·batch
计算机毕设定制辅导-无忧学长7 小时前
《基于SpringBoot的庭院玫瑰栽培养护知识交互式科普平台设计与实现》
java·spring boot·后端·毕业设计·个性化推荐·协同过滤算法·庭院玫瑰栽培养护知识科普平台
坚定学代码7 小时前
static在c++中的使用
开发语言·c++
Json____7 小时前
从零构建家政服务平台:一套全栈架构如何打通管理端与移动端-java-springboot
java·spring boot·后端·架构·毕设·wwwoop.com
云雀衔光8 小时前
Java Spring AI MCP:在 Spring 里把 AI 接上你的业务系统
java·开发语言·人工智能·后端·测试工具·spring