天天看點

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

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

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

解題思路

  1. 本題采用DFS的思想。
  2. 隻要有左括号剩餘的時候,就将左括号剩餘數量-1,然後繼續投入DFS。
  3. 當左括号的長度小于有括号的長度時,将右括号剩餘數量-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的相關思想,來解決周遊所有情況的問題。

參考題解

leetcode-cn.com/problems/ge…

繼續閱讀