LeetCode 22 括號生成

2022-09-17 08:12:11 字數 786 閱讀 6689

22. 括號生成

難度中等

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

示例:

輸入:n = 3

輸出:[

"((()))",

"(()())",

"(())()",

"()(())",

"()()()"

]思路:可以用樹將示例模擬一遍,如下圖(有點醜,不用吐槽,我承認,傲嬌臉),我們可以通過遞迴進行,向左是新增左括號,向右新增右括號,為了是括號匹配,有括號的數量不能多於左括號的數量,還有就是輸入的括號可以當作是乙個字串,所以我們要記得在最後加上'\0'。

**如下:

1/**

2* note: the returned array must be malloced, assume caller calls free().3*/

4void dfs(char* temp,int index,int left,int right,char** result,int* count,intn)5

11 temp[index+1]='\0'

;12if(left>0)16

if(right>left)20}

2122

23char ** generateparenthesis(int n, int*returnsize)

LeetCode22 括號生成

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

leetcode 22 括號生成

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

leetcode 22 括號生成

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