2020.12.9每日複習
22.括號生成
分析
- 當前左右括號都有大於 0 個可以使用的時候,才產生分支;
- 產生左分支的時候,只看當前是否還有左括號可以使用;
- 產生右分支的時候,還受到左分支的限制,右邊剩餘可以使用的括號數量一定得在嚴格大於左邊剩餘的數量的時候,才可以產生分支;
- 在左邊和右邊剩餘的括號數都等於 0 的時候結算。
class Solution {
public List<String> generateParenthesis(int n) {
List<String> res = new ArrayList<>();
if(n == 0) return res;
dfs("", n, n, res);
return res;
}
//left表示左括號還剩幾個,right表示右括號還剩幾個,str表示拼接的括號字串
public void dfs(String str, int left, int right, List<String> res) {
if(left == 0 && right == 0) { //如果左右同時為0,則全部遍歷完成
res.add(str);
return;
}
if(left > right) { //如果左括號剩下的比右括號多,則不可能是有效的括號組合
return;
}
if(left > 0) {
dfs(str + "(", left - 1, right, res);
}
if(right > 0) {
dfs(str + ")", left, right - 1, res);
}
}
}
相關文章
- 2020.12.12每日複習
- 2020.11.24每日複習
- 每日學習
- 每日學習打卡
- 12.26 前端-每日學習前端
- Noip 複習
- python複習Python
- 複習 - ajax
- javase複習Java
- SQL複習SQL
- OS複習
- 爬蟲複習爬蟲
- [複習]day 6
- NOIP 複習題
- 教資複習
- 複習 面試面試
- 【Java】JVM複習JavaJVM
- iOS複習(二)iOS
- 【每日一題】無重複字元的最長子串每日一題字元
- LeetCode每日一題:重複 N 次的元素(No.961)LeetCode每日一題
- 區塊鏈習題複習區塊鏈
- [複習] 圖連通性
- MyBatis複習筆記MyBatis筆記
- SpringMVC複習筆記SpringMVC筆記
- 網路複習題
- c語言複習C語言
- 複習全書 + 660
- 資料庫複習資料庫
- 2024.4.17python複習Python
- java基礎複習Java
- Redis 複習筆記Redis筆記
- Java se 複習05Java
- C/C++複習C++
- js基礎複習JS
- JavaSE複習鞏固Java
- 藍橋複習——KMPKMP
- 微機介面複習
- Linux複習知識Linux