LeetCode 22. 括号生成

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

LeetCode 22. 括号生成

 

 解答:

    private int number;
    private List<String> result;
    public List<String> generateParenthesis1(int n) {
        if (n == 0) {
            return Collections.emptyList();
        }
        number = n;
        result = new ArrayList<String>();
        generateParenthesis("", 0, 0);
        return result;
    }
    
    private void generateParenthesis(String str, int leftCount, int rightCount) {
        if (leftCount > number || rightCount > number) {
            return;
        }
        if (leftCount == number && rightCount == number) {
            result.add(str);
        }
        if (leftCount >= rightCount) { // 左括号数量>=右括号数量
            generateParenthesis(str + "(", leftCount + 1, rightCount);
            generateParenthesis(str + ")", leftCount, rightCount + 1);
        }
    }

 

上一篇:Superset 实现可视化报表发布


下一篇:算法第四版1.3背包、队列和栈:习题1.3.48