zoukankan      html  css  js  c++  java
  • LeetCode 22. Generate Parentheses (括号生成)

    题目标签: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/

  • 相关阅读:
    POJ
    CodeForces
    部分和问题
    NOIP200502校门外的树
    消灭虫子
    抓牛
    最长不下降子序列的长度
    HDNoip201501计算结果最小
    抽签
    Ants
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/12495796.html
Copyright © 2011-2022 走看看