列表

详情


剑指 Offer II 085. 生成匹配的括号

正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

 

提示:

 

注意:本题与主站 22 题相同: https://leetcode.cn/problems/generate-parentheses/

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<string> generateParenthesis(int n) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.8 MB, 提交时间: 2021-08-03 16:01:17

func generateParenthesis(n int) []string {
	var res []string
	var dfs func(lRemain, rRemain int, path string)
	dfs = func(lRemain, rRemain int, path string) {
		if 2 * n == len(path) {
			res = append(res, path)
			return
		}
		if lRemain > 0 { // 左括号 ( 还没选完,
			dfs(lRemain-1, rRemain, path+"(")
		}
		if lRemain < rRemain {  // ( 个数 少于 )
			dfs(lRemain, rRemain-1, path+")")
		}
	}

	dfs(n, n, "")
	return res
}

上一题