2026/3/11 15:27:21
网站建设
项目流程
做电商排名网站,网站建设电话着么打,网络营销的现状和发展趋势,广告设计公司需要用专线网吗题目数字 n 代表生成括号的对数#xff0c;请你设计一个函数#xff0c;用于能够生成所有可能的并且 有效的 括号组合。示例 1#xff1a;输入#xff1a;n 3
输出#xff1a;[((())),(()()),(())(),()(()),()()(…题目数字n代表生成括号的对数请你设计一个函数用于能够生成所有可能的并且有效的括号组合。示例 1输入n 3输出[((())),(()()),(())(),()(()),()()()]示例 2输入n 1输出[()]提示1 n 8思路“选与不选”对于每一个左括号都有选或不选对于每一个右括号都有选或不选很明显的递归思路1.递归终止条件如果选的括号总数 2 * n那么找到一个组合在递归时使用剪枝保证所有到达终止条件的组合都合法存进答案2.递归单层逻辑选择左括号的数量 n则可以继续选即处理下一个左括号选择右括号的数量要 左括号的数量则可以继续选即处理下一个右括号3.递归参数由第二步可知我们需要知道此时的括号组合、左括号的数量、右括号的数量代码class Solution: def generateParenthesis(self, n: int) - List[str]: temp res [] def backtrack(temp,l, r): if len(temp) 2 * n: # 找到一个组合 res.append(temp) return if l n: # 如果左括号 n继续加入左括号左括号数量1递归 backtrack(temp (, l 1, r) if r l: # 如果右括号 左括号数量可以加入右括号右括号数量 1递归 backtrack(temp ), l, r 1) backtrack(, 0, 0) return res