LeetCode 22 括號生成

2021-10-13 02:00:16 字數 525 閱讀 5379

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

1.首先肯定能想到暴力窮舉的方式:一共有n對括號,即2n個位置,每個位置都有兩種括號選擇,一共有2的2n次方種情況,列舉完之後再排除不符合的情況。這樣時間複雜度會很高。

2.回溯法:回溯法對暴力窮舉進行了剪枝,對於某次嘗試,若不符合規則,直接返回,不再繼續嘗試。設定兩個變數對左括號和右括號進行計數,若左括號數小於n,則優先放置左括號,當左括號數等於n時不再繼續放置,而是放置右括號。每次都要保證已放置的左括號小於n且已放置的左括號數要大於右括號數。

class

solution

void

backtrack

(int left,

int right)

if(left < n)

if(left > right)}}

;

LeetCode22 括號生成

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

leetcode 22 括號生成

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

leetcode 22 括號生成

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