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);
            }
        }
    }
相关推荐
songcream1几秒前
Spring Boot资料整理
java·spring boot·后端
源码宝1 分钟前
新一代医院信息系统云HIS,多租户共享,java版HIS+EMR+LIS全套源码
java·大数据·源码·云his·his系统·源代码·医院信息系统
iiiiyu13 分钟前
面向对象高级接口的综合案例
java·开发语言·数据结构·编程语言
fzil00123 分钟前
让 AI 自己协作 —— 多智能体(Swarm)系统的设计与实现
java·开发语言·人工智能·ubuntu
Mem0rin26 分钟前
[Java/数据结构]二叉树练习题几则
java·开发语言·数据结构
圣保罗的大教堂28 分钟前
leetcode 2069. 模拟行走机器人 II 中等
leetcode
lhbian29 分钟前
PHP vs Java vs Go:编程语言终极对比
java·spring boot·后端·kafka·linq
java修仙传31 分钟前
从手写 Redis 锁到 Redisson:我对分布式锁安全性的理解
java·数据库·redis·分布式
地平线开发者34 分钟前
目标检测的 Anchor-Free 和 NMS 到底是什么?
算法·自动驾驶
oh LAN35 分钟前
Windows 下 Redis 开机自启
数据库·windows·redis