做窗帘店的网站,苏中建设 官方网站,郑州做网站推广外包,wordpress主机要求题目
数字 n 代表生成括号的对数#xff0c;请你设计一个函数#xff0c;用于能够生成所有可能的并且 有效的 括号组合。
示例
输入#xff1a;n 3 输出#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]
解析
func generateParenthesis(n int) …题目
数字 n 代表生成括号的对数请你设计一个函数用于能够生成所有可能的并且 有效的 括号组合。
示例
输入n 3 输出[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]
解析
func generateParenthesis(n int) []string {m : 2 * nans : []string{}var path []bytevar dfs func(i, left int)dfs func(i, left int) {if i m {ans append(ans, string(path))}if left n {path append(path, ()dfs(i1, left1)path path[:len(path)-1]}if i-left left {path append(path, ))dfs(i1, left)path path[:len(path)-1]}}dfs(0, 0)return ans
}这道题有如下细节需要注意首先是n代表括号的对数那么就需要乘以2来计算出左括号右括号数量之和在dfs逻辑中如果左括号的数量小于n则代表还有可以存左括号的位置i-left其实就是右括号右括号的数量小于left表示还可以添加右括号