括号生成
https://leetcode.cn/problems/generate-parentheses/solution/-by-1978-7-owhs/
/** * @name: 括号生成 * @param {int} n 括号的个数 * @return {*} */ func generateParenthesis(n int) []string { res := []string{} if n == 0 { return res } dfs("", n, n, &res) return res } /** * @name: 深度优先遍历拼接结果 * @param {string} curStr 当前递归得到的结果 * @param {int} leftNum 剩余的左括号个数 * @param {int} rightNum 剩余的右括号个数 * @return {*} */ func dfs(curStr string, leftNum int, rightNum int, res *[]string) { // 递归终止直接加入结果集,无需回溯 if leftNum == 0 && rightNum == 0 { *res = append(*res, curStr) return } // 剪枝 if leftNum > rightNum { return } if leftNum > 0 { dfs(curStr+"(", leftNum-1, rightNum, res) } if rightNum > 0 { dfs(curStr+")", leftNum, rightNum-1, res) } }
等风起的那一天,我已准备好一切