leetcode 22 生成合法的括號組合

2021-10-10 23:18:08 字數 724 閱讀 6978

給定n對括號,計算出n對括號的所有合法組合

實現起來非常複雜…

將每一種括號的組合放在6個字元大小的陣列中,共會產生22n個組合,時間複雜度位2(2n)

如何判斷非法括號組合:從左往後掃瞄,當左括號出現次數少於右括號時即非法,如:())(()

還是遞迴,但使用剪枝法來排除產生非法的括號組合:左括號可以隨便新增,最多到n個,但右括號新增時,必須比左括號數量少,這樣就不會產生非法括號組合

**

class solution:

def generateparenthesis(self, n: int) -> list[str]:

self.paren_conbi =

self._gen_paren(0, 0, n, '')

return self.paren_conbi

def _gen_paren(self, left, right, n, result=''):

if left == n and right == n:

return

if left < n:

self._gen_paren(left+1, right, n, result+"(")

if right < left and right < n:

self._gen_paren(left, right+1, n, result+")")

遞迴規模以2倍增大,所以時間複雜度為o(2^n)

LeetCode 22 生成括號

22 生成括號 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 生成所有 2 個 和 字元構成的序列。然後,我們將檢查每乙個是否有效。為了檢查序列是否為有效的,我們會跟蹤平衡,也就是左括號的數量減去右括號的數量的淨值。如果這個...

LeetCode22 括號生成

題幹 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 演算法思想 先看括號匹配,既然要達到括號匹配,就一定要滿足stack的操作 不多說 則組合數的結果則是卡特蘭數。要輸出正確組合數,可採用遞迴,用兩個變數l,r分別表示剩餘左...

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 要把這個當成下棋,左括號為黑,右括號為白,則轉換為 3黑3白有幾種排列方式 每一步都有兩個選擇 下黑或者下白,但是場上下白子時剩下的黑子必須比剩下的白子多 比n 2時,有黑白黑白...