LeetCode - Generate Parentheses
2015-04-09 23:05
211 查看
https://leetcode.com/problems/generate-parentheses/
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
这道题我是用递归做的,在当前递归中,如果左括号没用完的话,肯定可以再加一个左括号,如果右括号的数目小于左括号的话,肯定可以加一个右括号。知道最后左右括号都用完了,就把当前结果加入到返回的结果中。
空间复杂度O(n),时间复杂度O(2^n),解释见这里:
http://stackoverflow.com/questions/19609902/print-all-validate-parentheses-how-does-the-recursive-work-here
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
这道题我是用递归做的,在当前递归中,如果左括号没用完的话,肯定可以再加一个左括号,如果右括号的数目小于左括号的话,肯定可以加一个右括号。知道最后左右括号都用完了,就把当前结果加入到返回的结果中。
public class Solution { public List<String> generateParenthesis(int n) { List<String> rst = new LinkedList<String>(); if(n<=0) return rst; StringBuilder sb = new StringBuilder(); helper(rst, sb, n, 0, 0); return rst; } public void helper(List<String> rst, StringBuilder sb, int n, int left, int right){ if(left==n && right==n){ rst.add(sb.toString()); return; } if(left>n || right>n) return; if(left < n){ sb.append('('); helper(rst, sb, n, left+1, right); sb.deleteCharAt(sb.length() - 1); } if(right <left){ sb.append(')'); helper(rst, sb, n, left, right+1); sb.deleteCharAt(sb.length() - 1); } } }
空间复杂度O(n),时间复杂度O(2^n),解释见这里:
http://stackoverflow.com/questions/19609902/print-all-validate-parentheses-how-does-the-recursive-work-here
相关文章推荐
- 【Leetcode】【python】Generate Parentheses
- LeetCode 22 Generate Parentheses
- [leetcode]Generate Parentheses
- 【leetcode】Generate Parentheses
- 【leetcode】 Generate Parentheses (middle)☆
- [leetcode 22]generate parentheses
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- leetCode力扣之Generate Parentheses
- leetcode-Generate Parentheses (2014.4.18)
- leetcode (22) - Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode | Generate Parentheses
- [LeetCode] Valid Parentheses、Generate Parentheses、Longest Valid Parentheses
- leetcode[22]Generate Parentheses
- 【LeetCode】Generate Parentheses 解题报告
- LeetCode-Generate Parentheses & Letter Combinations of a Phone Number
- LeetCode 22 Generate Parentheses
- [leetcode]Generate Parentheses @ Python
- Generate Parentheses——LeetCode
- leetcode 022 Generate Parentheses