码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 22. Generate Parentheses (括号生成)

时间:2020-03-15 09:57:24      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:log   lan   dfs   back   div   build   generate   stringbu   solution   

题目标签:Backtracking

  建立一个 HashMap 来记录 括号的 数量,利用DFS, 先用 左括号, 在用 右括号, 当 右括号用完的时候 返回。具体看code。

 

Java Solution: 

Runtime:  1 ms, faster than 85.94 % 

Memory Usage: 39.5 MB, less than 20.00 %

完成日期:12/12/2019

关键点:HashMap

class Solution {
    HashMap<Character, Integer> map;
        
    public List<String> generateParenthesis(int n) {
        map = new HashMap<>();
        List<String> res = new ArrayList<>();
        StringBuilder comb = new StringBuilder();
        
        map.put(‘(‘, n);
        map.put(‘)‘, n);
        
        DFS(res, comb);
        
        return res;
    }
    
    
    private void DFS(List<String> res, StringBuilder comb) {
        if(map.get(‘)‘) == 0) {
            res.add(comb.toString());
            return;
        }
        
        // append ‘(‘
        if(map.get(‘(‘) > 0) {
            comb.append(‘(‘);
            map.put(‘(‘, map.get(‘(‘) - 1);
            DFS(res, comb);
            comb.deleteCharAt(comb.length()-1);
            map.put(‘(‘, map.get(‘(‘) + 1);
        }
                    
        // append ‘)‘ only when ( is used first
        if(map.get(‘(‘) < map.get(‘)‘) && map.get(‘)‘) > 0) {
            comb.append(‘)‘);
            map.put(‘)‘, map.get(‘)‘) - 1);
            DFS(res, comb);
            comb.deleteCharAt(comb.length()-1);
            map.put(‘)‘, map.get(‘)‘) + 1);
        }
    }
}

参考资料:n/a

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

LeetCode 22. Generate Parentheses (括号生成)

标签:log   lan   dfs   back   div   build   generate   stringbu   solution   

原文地址:https://www.cnblogs.com/jimmycheng/p/12495796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!