LeetCode 22. Generate Parentheses (括号生成)
Posted 几米空间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/
以上是关于LeetCode 22. Generate Parentheses (括号生成)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 22. Generate Parentheses
leetcode22. Generate Parentheses
leetcode 22 -- Generate Parentheses
[leetcode-22-Generate Parentheses]