22. Generate Parentheses

代码1

backtrack
Runtime: 1 ms, faster than 84.99% of Java online submissions for Generate Parentheses.

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> list = new ArrayList();
        backtrack(list, "", 0, 0, n);
        return list;
    } 
    public void backtrack(List<String> list, String s, int open, int close, int n) {
        if (s.length() == n * 2) {
            list.add(s);
            return;
        }
        if (open < n) {
            backtrack(list, s + "(", open + 1, close, n);
        }
        if (close < open) {
            backtrack(list, s + ")", open, close + 1, n);
        }
    }
}

代码1

dp
Runtime: 12 ms, faster than 5.40% of Java online submissions for Generate Parentheses.

class Solution {
    public List generateParenthesis(int max) {
        List<List<String>> list = new LinkedList();
        list.add(Arrays.asList(""));
        for (int i = 1; i <= max; i++) {
            List<String> nlist = new LinkedList();
            for (int j = 0; j < i; j++) {
                List<String> inside = list.get(j);
                List<String> tail = list.get(i - j - 1);
                for (int n = 0; n < inside.size(); n++) {
                    for (int m = 0; m < tail.size(); m++) {
                        nlist.add("(" + inside.get(n) + ")" + tail.get(m));
                    }
                }
            }
            list.add(nlist);
        }
        return list.get(max);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容