LeetCode 22 括號生成(4 9打卡)

2021-10-04 21:32:23 字數 1067 閱讀 8531

括號生成

數字 n 代表生成括號的對數,請你設計乙個函式,用於能夠生成所有可能的並且 有效的 括號組合。

示例:輸入:n = 3

輸出:[

「((()))」,

「(()())」,

「(())()」,

「()(())」,

「()()()」

]

class

solution

private

static

void

create

(char

ch,

int pos,

int n)

else

}private

static

boolean

valid

(char

ch,

int pos)

if(s==0)

return

true

;return

false;}

}

//大佬的1ms**

class

solution

private

void

dfs(

int idx,

int leftremain,

int rightremain,

char

string, list

list)

// 列舉這一層所有可能的選擇

// 選擇一種可能之後,進入下一層搜尋

// 什麼情況可以選擇左括號?左括號的數量 > 0

// 選擇左括號,然後進入下一層搜尋

if(leftremain >0)

// 當左括號、右括號的數量一樣時,只能選擇左括號

// 什麼情況可以選擇右括號?(右括號的數量 > 0) && (右括號的數量 != 左括號的數量)

// 選擇右括號,然後進入下一層搜尋

if(rightremain >

0&& leftremain != rightremain)

}}

LeetCode22 括號生成

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

leetcode 22 括號生成

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

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 參考官方題解 方法二 回溯法 只有在序列仍然保持有效才會新增 如果還有位置,我們可以開始放乙個左括號。如果不超過右括號數量不超過左括號的數量可以放乙個右括號。class solu...