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

总结

回溯法。

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

相关推荐
孞㐑¥3 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风3 小时前
代码随想录第十五天
数据结构·算法·leetcode
XX風3 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT064 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠4 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂4 小时前
代码随想录day37动态规划part05
算法
sali-tec4 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉
子春一4 小时前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
人道领域5 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
TracyCoder1235 小时前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode