leetcode22.括号生成

这道题目是一道回溯题,特殊之处在于右括号选择时,右括号的当前数量必须少于左括号的数量

java 复制代码
class Solution {

    private List<String> result;

    private void generateParenthesis(int n, StringBuilder stringBuilder, int open, int close) {
        if (2*n == stringBuilder.length()) {
            result.add(stringBuilder.toString());
        }
        if (open < n) {
            stringBuilder.append('(');
            generateParenthesis(n, stringBuilder, open + 1, close);
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        }
        if (close < open) {
            stringBuilder.append(')');
            generateParenthesis(n, stringBuilder, open, close + 1);
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        }
    }

    public List<String> generateParenthesis(int n) {
        result = new ArrayList<>();
        generateParenthesis(n, new StringBuilder(), 0, 0);
        return result;
    }
}
相关推荐
带刺的坐椅24 分钟前
Solon 整合 LiteFlow 规则引擎:概念与实战
java·solon·liteflow
wuk9981 小时前
互联网应用主流框架整合 Spring Boot开发
java·spring boot·后端
恣艺1 小时前
LeetCode 1074:元素和为目标值的子矩阵数量
算法·leetcode·矩阵
forestsea1 小时前
Caffeine 缓存库的常用功能使用介绍
java·缓存·caffeine
技术卷2 小时前
详解力扣高频SQL50题之1084. 销售分析 III【简单】
sql·leetcode·oracle
queenlll2 小时前
P1064 [NOIP 2006 提高组] 金明的预算方案 题解
算法
辉辉健身中2 小时前
HttpServletRequest知识点
java
摸鱼仙人~2 小时前
HttpServletRequest深度解析:Java Web开发的核心组件
java·开发语言·前端
nbsaas-boot2 小时前
收银系统优惠功能架构:可扩展设计指南(含可扩展性思路与落地细节)
java·大数据·运维
你过来啊你2 小时前
Java面向对象思想解析
android·java