leetcode 22. 括号生成
生活随笔
收集整理的這篇文章主要介紹了
leetcode 22. 括号生成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
難度:中等
頻次:62
題目:
數字 n 代表生成括號的對數,請你設計一個函數,用于能夠生成所有可能的并且 有效的 括號組合。
解題思路:DFS
DFS注意
- 構造一棵樹,只要遍歷就行了
- 遞歸結束條件是 left right(每次遍歷一個節點就為0) 的值為0
- 需要剪枝,條件是需要left>right[因為這道題的前提就是,一個字符串里”(“必須要比“)”多,才有機會合成,不然你剩下一堆的”("沒地方用]
- 每次遍歷都需要判斷條件,只有left和right>0才有必要進行相應的遍歷
代碼
class Solution {public List<String> generateParenthesis(int n) {List<String> res=new ArrayList<String>();dfs("",n,n,res);return res;}public void dfs(String s,int left,int right,List<String> res){if(left==0&&right==0) {res.add(s);return;}if(left>right){return;}//left、right必須>0,不然會走一些亂七八糟的遍歷if(left>0){dfs(s+"(",left-1,right,res);}if(right>0){dfs(s+")",left,right-1,res);}} }總結
以上是生活随笔為你收集整理的leetcode 22. 括号生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 155. 最小栈
- 下一篇: 多看看把,条件太多了--leetcode