生成有效的括号
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/gen
/*
左括号的个数最多为n 个
右括号小于等于左括号的个数
*/
type Result struct {
res []string
}
func (r *Result)generateParenthesis(n int, left int, right int, res string) {
// 不符合规范的
if left < right || left > n {
return
}
// 符合条件的结果
if left == n && left == right {
r.res = append(r.res, res)
return
}
// 处理当前层
r.generateParenthesis(n, left+1, right, res+"(")
r.generateParenthesis(n, left, right + 1, res+")")
}
func generateParenthesis(n int) []string {
r := &Result{
res : []string{},
}
r.generateParenthesis(n,0,0,"")
return r.res
}Last updated
Was this helpful?