59、回溯-括号生成

思路:

括号是成对出现,首先左括号可以放n个,右括号也可以放n个。如果当前左括号放了3了,右括号放了4个,错了,如果左括号放了5个,右括号放了4个。可以,继续放右括号即可。所以可以设计:

1、当前左括号-右括号>0?大于可以放右括号

2、当前左括号还剩下多少个可以放 >0 可以继续放左括号

代码如下:

复制代码
 public List<String> generateParenthesis(int n) {
        List<String> ans=new ArrayList<>();
        if (n<1){
            return ans;
        }
        char[] path = new char[n * 2];
        process(0,0, n,path,ans);
        return ans;
    }

    /**
     * 
     * @param index 下标
     * @param leftNum 左括号-右括号还剩下几个
     * @param leftNumAll 左边一共可以放几个
     * @param path
     * @param ans
     */
    private void process(int index, int leftNum, int leftNumAll, char[] path, List<String> ans) {
        if (index==path.length){
            ans.add(String.valueOf(path));
        }else {
            if (leftNum>0){
                path[index]=')';
                process02(index+1,leftNum-1,leftNumAll,path,ans);
            }
            if (leftNumAll>0){
                path[index]='(';
                process02(index+1,leftNum+1,leftNumAll-1,path,ans);
            }
        }
    }
相关推荐
2401_894915533 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
1000世界小札4 小时前
《大话数据结构》第9章精读:归并排序与快速排序完整 C++ 实现
数据结构·c++·算法
2601_956121977 小时前
背包基础篇(01、完全、分组、多重、混合)
c++·算法·动态规划
Java牛马7 小时前
SpringBoot Starter 依赖相关总结
java·spring·springboot·starter·自动装配·依赖
吴声子夜歌7 小时前
Java面试——Spring Cloud原理及应用(二)
java·spring cloud·面试
东小西7 小时前
【SAA实战】第 1 篇:ReactAgent 入门——先撸个"会调工具的助手"跑起来
java·人工智能·spring
兴通物联科技8 小时前
SMT PCB 微小 DataMatrix 码扫不动问题分析 兴通 XT8601B 600 万像素工业读码器落地实践
大数据·人工智能·单片机·嵌入式硬件·算法·计算机视觉
mqiqe8 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
脉动数据行情8 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股