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);
    }
  }
}

总结

回溯法。

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

相关推荐
jackzhuoa7 小时前
Rust 异步核心机制剖析:从 Poll 到状态机的底层演化
服务器·前端·算法
夜晚中的人海7 小时前
【C++】模拟算法习题
c++·算法·哈希算法
花月C7 小时前
算法 - 差分
人工智能·算法·机器学习
拆房老料7 小时前
深入解析提示语言模型校准:从理论算法到任务导向实践
人工智能·算法·语言模型
晨非辰7 小时前
《数据结构风云》递归算法:二叉树遍历的精髓实现
c语言·数据结构·c++·人工智能·算法·leetcode·面试
Dream it possible!7 小时前
LeetCode 面试经典 150_链表_LRU 缓存(66_146_C++_中等)(哈希表 + 双向链表)
c++·leetcode·链表·面试
_dindong10 小时前
牛客101:二叉树
数据结构·c++·笔记·学习·算法
数字化脑洞实验室11 小时前
如何理解不同行业AI决策系统的功能差异?
大数据·人工智能·算法
前端架构师-老李13 小时前
从大厂到中小公司,活下去的五个生存法则
职场和发展