> Problem: [22. 括号生成]
[TOC]
# 思路
> 有一说一,这个题要看你的脑子的思路,我在看这道题的时候我在草稿纸上演算了好几遍,但是总感觉挺麻烦的,实在想不出来,我好笨欧!不过看解题思路之后,我似乎明白了。
# 解题方法
> 整它:
题目的范围是1-8;但是如果是0的话,就是 ""
已知如果给的是1的话则输出 "()"
则算给出的2的时候就简单了,则就有两种情况,第一种 i = 0 则就是在n=0的情况记为 left 与2-i-1=1的情况,记为 right
则每种情况都如下面的:
(left)right
每种情况都是有效值
# Code
```Java []
class Solution {
public List<String> generateParenthesis(int n) {
ArrayList<String> ans = new ArrayList<>();
if(n == 0){
ans.add("");
}else{
for (int i = 0;i<n;i++){
for (String left : pp(i)){
for (String right : pp(n-i-1)){
ans.add("("+left+")"+right);
}
}
}
}
return ans;
}
public List<String> pp(int n){
return generateParenthesis(n);
}
}
```
本文详细解析了LeetCode上的括号生成题目,通过递归算法实现了有效括号字符串的生成。文章介绍了递归思路,逐步推导出核心算法,并给出了Java实现代码。
955

被折叠的 条评论
为什么被折叠?



