美文网首页
leetcode题目22: 括号生成(java)

leetcode题目22: 括号生成(java)

作者: castlet | 来源:发表于2020-06-06 22:23 被阅读0次

题目描述

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例

输入:n = 3
输出:[
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]

解题思路

代码

public List<String> generateParenthesis(int n) {
    if (n <= 0) {
        return null;
    }
    List<String> result = new ArrayList<>();
    dfs("", 0, 0, n, result);
    return result;
}

/**
 * @param prefix 当前的字符串
 * @param left   左括号用了几个
 * @param right  右括号用了几个
 * @param size   生成括号的对数
 * @param result 结果
 */
void dfs(String prefix, int left, int right, int size, List<String> result) {
    if ( left == right && left == size) {
        // 左右括号使用的个数相同,并且都用完了,则是符合条件的括号组合。
        result.add(prefix);
        return;
    }
    if (left < right) {
        // 如果当前已使用左括号的数量小于右括号的数量,则无法形成有效的括号。直接return。
        return;
    }
    if (left < size) {
        dfs(prefix + "(", left + 1, right, size, result);
    }

    if (right < size) {
        dfs(prefix + ")", left, right + 1, size, result);
    }
}

相关文章

  • leetcode题目22: 括号生成(java)

    题目描述 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 解...

  • LeetCode 22. 括号生成

    1、题目 22. 括号生成 - 力扣(LeetCode) https://leetcode-cn.com/prob...

  • LeetCode-22-括号生成

    LeetCode-22-括号生成 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且...

  • 22. 括号生成

    22. 括号生成 题目链接:https://leetcode-cn.com/problems/generate-p...

  • a 递归

    1 括号生成(leetcode 22)

  • LeetCode-22. 括号生成

    参考:第7课-泛型递归、树的递归 LeetCode-22. 括号生成 22. 括号生成 数字 n 代表生成括号的对...

  • 合法括号生成

    读完本文,你可以去力扣拿下如下题目: 22.括号生成[https://leetcode-cn.com/proble...

  • 2018-04-07

    Leetcode面试题 —— 生成括号 1 题目描述: 给出n代表生成括号的对数,请你写出一个能够生成...

  • 【leetcode】括号生成

    【leetcode】括号生成 题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 ...

  • 22. 括号生成

    22. 括号生成[https://leetcode.cn/problems/generate-parenthese...

网友评论

      本文标题:leetcode题目22: 括号生成(java)

      本文链接:https://www.haomeiwen.com/subject/bbnizhtx.html