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+")");
        }
        
    }
}
相关推荐
深入云栈1 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
爱笑的k112 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
wang_shu_mo_ran2 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
X1A0RAN3 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
量化分析码农4 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.4 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
熊猫钓鱼>_>4 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮4 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗4 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle
Cosolar5 小时前
极简智库:快速搭建你的开源项目教程阅读平台,让 docs/ 目录被更多人看见
java·架构·github