數字 n 代表生成括號的對數,請你設計乙個函式,用於能夠生成所有可能的並且 有效的 括號組合。
示例:輸入:n = 3
輸出:[
「((()))」,
「(()())」,
「(())()」,
「()(())」,
「()()()」
]方法一:暴力法
相當於填滿2n個字元陣列,如果填滿後符合括號規則,則新增到答案中,每個位置都有選和不選兩種選擇,所以總共有2^2n個選擇,同時每個選擇還需要有o(n)去判斷是否符合規則
char str 轉換為 string,可以使用 new string(str);
class
solution
//char陣列儲存當前答案,pos表示當前的位置
public
void
dfs(
char
str,
int pos)
}else
}//判斷括號是否有效
public
boolean
valid
(char
str)
else
if(count <0)
}if(count ==0)
else
}}
class
solution
public
void
dfs(list
ans,stringbuilder str,
int open,
int close,
int n)
}else
if(close < open)}}
//判斷括號是否有效
public
boolean
valid
(stringbuilder str)
else
if(count <0)
}if(count ==0)
else
}}
LeetCode22 括號生成
題幹 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 演算法思想 先看括號匹配,既然要達到括號匹配,就一定要滿足stack的操作 不多說 則組合數的結果則是卡特蘭數。要輸出正確組合數,可採用遞迴,用兩個變數l,r分別表示剩餘左...
leetcode 22 括號生成
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 要把這個當成下棋,左括號為黑,右括號為白,則轉換為 3黑3白有幾種排列方式 每一步都有兩個選擇 下黑或者下白,但是場上下白子時剩下的黑子必須比剩下的白子多 比n 2時,有黑白黑白...
leetcode 22 括號生成
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 參考官方題解 方法二 回溯法 只有在序列仍然保持有效才會新增 如果還有位置,我們可以開始放乙個左括號。如果不超過右括號數量不超過左括號的數量可以放乙個右括號。class solu...