原题
https://leetcode.cn/problems/generate-parentheses/description/
思路
回溯法
复杂度
时间:O(n)
空间:O(n)
Python代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
def dfs(left, right, path):
if left == n and right == n:
ans.append(path)
return
if right > left or left > n or right > n:
return
dfs(left + 1, right, path + "(")
dfs(left, right + 1, path + ")")
dfs(0, 0, "")
return ans
Go代码
func generateParenthesis(n int) []string {
ans := []string{}
// 匿名函数
var dfs func(int, int, string)
dfs = func(left int, right int, path string) {
if left == n && right == n {
ans = append(ans, path)
return
}
if right > left || left > n || right > n {
return
}
dfs(left+1, right, path+"(")
dfs(left, right+1, path+")")
}
dfs(0, 0, "")
return ans
}

被折叠的 条评论
为什么被折叠?



