22. 括号生成 @Python @Go

原题

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
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值