22. Generate Parentheses——本质:树,DFS求解可能的path
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
class Solution(object): def generateParenthesis(self, n): """ :type n: int :rtype: List[str] [ "((()))", "(()())", "(())()", "()(())", "()()()"] () / \ () () / \ / \ () ()()() """ ans = [] path = [] self.gen_par_helper(n*2, path, ans) return ans def is_valid_par(self, par): stack = [] for c in par: if c == "(": stack.append("(") else: if stack: stack.pop() else: return False return len(stack) == 0 def gen_par_helper(self, n, path, ans): if n == 0: if self.is_valid_par(path): ans.append("".join(path)) return for c in "()": path.append(c) self.gen_par_helper(n-1, path, ans) path.pop()
class Solution(object): def generateParenthesis(self, n): """ :type n: int :rtype: List[str] [ "((()))", "(()())", "(())()", "()(())", "()()()"] () / \ () () / \ / \ () ()()() """ ans = [] self.gen_par_helper(n, n, "", ans) return ans def gen_par_helper(self, left, right, path, ans): if left == 0 and right == 0: ans.append(path) return if left > 0: self.gen_par_helper(left-1, right, path+"(", ans) if right > 0 and right > left: self.gen_par_helper(left, right-1, path+")", ans)
第二种更快,只是不那么容易想到!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」