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);
            }
        }
    }
相关推荐
罗湖老棍子18 分钟前
强迫症冒险家的任务清单:字典序最小拓扑排序
数据结构·算法·图论·拓扑排序
不穿格子的程序员42 分钟前
从零开始写算法——回溯篇4:分割回文串 + N皇后
算法·深度优先·dfs
ScilogyHunter1 小时前
qBI有什么用
算法·qbi
Jackson@ML1 小时前
2026最新版Sublime Text 4安装使用指南
java·python·编辑器·sublime text
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 校园闲置物品交易平台的设计与实现为例,包含答辩的问题和答案
java·eclipse
chilavert3181 小时前
技术演进中的开发沉思-326 JVM:内存区域与溢出异常(上)
java·jvm
纪莫1 小时前
技术面:如何让你的系统抗住高并发的流量?
java·redis·java面试⑧股
龙山云仓1 小时前
No131:AI中国故事-对话荀子——性恶论与AI约束:礼法并用、化性起伪与算法治理
大数据·人工智能·深度学习·算法·机器学习
夏鹏今天学习了吗1 小时前
【LeetCode热题100(90/100)】编辑距离
算法·leetcode·职场和发展
spencer_tseng2 小时前
Unlikely argument type for equals(): JSONObject seems to be unrelated to String
java·equals