22.M 括号生成
思路
Code
func generateParenthesis(n int) []string {
var path string
var ans []string
generate(n, 0, path, &ans)
return ans
}
func generate(n int, start int, path string, ans *[]string) {
if start == 2*n {
if valid(path) {
*ans = append(*ans, path)
}
return
}
path += "("
generate(n, start+1, path, ans)
path = path[0 : len(path)-1]
path += ")"
generate(n, start+1, path, ans)
}
func valid(path string) bool {
val := 0
for _, ch := range path {
if ch == '(' {
val++
} else {
val--
}
if val < 0 {
return false
}
}
return val == 0
}Last updated