LeetCode LCR 085 括号生成

题目

解答

java 复制代码
class Solution {
  public List<String> generateParenthesis(int n) {
    List<String> results = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    generateParenthesis(n, n, sb, results);
    return results;
  }

  void generateParenthesis(int left, int right, StringBuilder sb,
                            List<String> results) {
    if (left == 0 && right == 0) {
      results.add(sb.toString());
      return;
    }

    if (left > 0) {
      sb.append("(");
      generateParenthesis(left - 1, right, sb, results);
      sb.deleteCharAt(sb.length() - 1);
    }
    if (left < right && right > 0) {
      sb.append(")");
      generateParenthesis(left, right - 1, sb, results);
      sb.deleteCharAt(sb.length() - 1);
    }
  }
}

总结

回溯法。

注意左括号在前,右括号在后,即左括号的数量要小于右括号的数量。

相关推荐
weixin1997010801618 分钟前
[特殊字符] 1688开放平台API Sign签名算法详解(Java / Python / PHP 实现)
java·python·算法
未若君雅裁29 分钟前
JVM 垃圾回收算法与分代回收机制
java·jvm·算法
智者知已应修善业35 分钟前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机
AC赳赳老秦1 小时前
OpenClaw 助力技术面试:自动生成面试题、模拟面试、整理面试知识点
开发语言·python·面试·职场和发展·自动化·deepseek·openclaw
8Qi81 小时前
LeetCode 4:寻找两个正序数组的中位数 —— 二分查找法
java·算法·leetcode·职场和发展·二分查找
林间码客1 小时前
智能旅行规划助手 — 实习面试问答手册
面试·职场和发展
8Qi81 小时前
LeetCode 32:最长有效括号 —— 栈 + 标记法 题解
java·数据结构·算法·leetcode·职场和发展··括号匹配
机器学习之心1 小时前
198种组合算法+优化CNN-LSTM+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备
深度学习·算法·cnn-lstm·shap分析·198种组合算法
Tairitsu_H1 小时前
[LC优选算法#3] 滑动窗口 | 将x减到0的最⼩操作数 | ⽔果成篮 | 字⺟异位词
c++·算法·leetcode·滑动窗口
bIo7lyA8v1 小时前
算法复杂度与能耗关系的多变量分析研究的技术8
算法