leetcode22. 括号生成(回溯)
生活随笔
收集整理的這篇文章主要介紹了
leetcode22. 括号生成(回溯)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)字 n 代表生成括號(hào)的對(duì)數(shù),請(qǐng)你設(shè)計(jì)一個(gè)函數(shù),用于能夠生成所有可能的并且 有效的 括號(hào)組合。
示例:
輸入:n = 3
輸出:[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
代碼
class Solution {ArrayList<String> strings=new ArrayList<>();public List<String> generateParenthesis(int n) {generatePa(n,0,0,new StringBuilder());return strings;}public void generatePa(int n,int left,int right,StringBuilder stringBuilder) {if(left==n&&right==n) {//匹配完成strings.add(stringBuilder.toString());return;} if(right+1<=left)//有足夠的(匹配{stringBuilder.append(')');generatePa(n,left,right+1,stringBuilder);stringBuilder.deleteCharAt(stringBuilder.length()-1);//回溯}if(left+1<=n)//有足夠的(可以用{stringBuilder.append('(');generatePa(n,left+1,right,stringBuilder);stringBuilder.deleteCharAt(stringBuilder.length()-1);}} }總結(jié)
以上是生活随笔為你收集整理的leetcode22. 括号生成(回溯)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode1415. 长度为 n
- 下一篇: 晚上做梦梦到毒蛇是好事还是坏事