LeetCode Hot100 22.括号生成

2023-12-13 03:54:52

题目

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

方法:灵神 组合型回溯-剪枝-枚举填左括号还是右括号

代码

class Solution {
    private int n;
    private char[] path;
    private final List<String> ans = new ArrayList<>();

    public List<String> generateParenthesis(int n) {
        this.n = n;
        path = new char[n * 2];
        dfs(0, 0);
        return ans; 
    }

    private void dfs(int i, int open) {
        if (i == n * 2) {
            ans.add(new String(path));
            return;
        }
        if (open < n) { // 可以填左括号
            path[i] = '(';
            dfs(i + 1, open + 1);
        }
        if (i - open < open) { // 可以填右括号
            path[i] = ')';
            dfs(i + 1, open);
        }
    }
}

文章来源:https://blog.csdn.net/qq_57349657/article/details/134899765
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。