楼主:
JIWP (JIWP)
2024-04-02 23:06:1522. Generate Parentheses
有n组括号,写一个function,可以产生所有括号的组合
思路:
当你放了一个左括号才能再放一个右括号
所以设两个变量L、R : L是左括号剩下的数量、R是右括号剩下的数量
一开始L=n、R=0
每次放了一个左括号就将L-1、R+1
同理放了一个右括号就将R-1
就这样一直到L+R==0就是一组组合了
照上面的规则写一个递回函式
golang code :
func generateParenthesis(n int) []string {
if n == 1 {
return []string{"()"}
}
return backtrack("", n, 0)
}
func backtrack(rec string, l, r int) []string {
if l+r == 0 {
return []string{rec}
}
var ans []string
if l > 0 {
ans = append(ans, backtrack(rec+"(", l-1, r+1)...)
}
if r > 0 {
ans = append(ans, backtrack(rec+")", l, r-1)...)
}
return ans
}