HOT100——括号生成(JS實作)

解題思路
- 本題采用DFS的思想。
- 隻要有左括号剩餘的時候,就将左括号剩餘數量-1,然後繼續投入DFS。
- 當左括号的長度小于有括号的長度時,将右括号剩餘數量-1,然後繼續投入DFS。
實作代碼
var generateParenthesis = function(n) {
// 定義最終傳回的結果
const res = [];
dfs(n,n,'');
// dfs函數
function dfs(Lremain,Rremain,str) {
// 如果str參數的長度等于2n,說明遞歸結束了
if (str.length === 2*n) {
res.push(str);
return;
}
// 如果左括号剩餘的多,将左括号放入遞歸
if (Lremain > 0) {
dfs(Lremain-1,Rremain,str+'(')
}
if (Lremain < Rremain) {
dfs(Lremain,Rremain-1,str+')')
}
}
return res;
};
啟示
學會使用DFS的相關思想,來解決周遊所有情況的問題。