news 2026/5/9 22:34:39

LeetCode 括号生成题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 括号生成题解

LeetCode 括号生成题解

题目描述

数字n代表生成括号的对数,请你写一个函数,使其能够生成所有可能的且有效的括号组合。

示例

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

解题思路

方法:回溯

思路

  • 使用回溯算法来解决这个问题。
  • 维护两个计数器:左括号的数量和右括号的数量。
  • 从第一个位置开始,尝试所有可能的选择:
    • 如果左括号数量小于 n,添加左括号。
    • 如果右括号数量小于左括号数量,添加右括号。
    • 当左括号数量等于 n 且右括号数量等于 n 时,将路径加入结果列表。

复杂度分析

  • 时间复杂度:O(4^n / sqrt(n)),这是卡特兰数的复杂度。
  • 空间复杂度:O(n),递归调用栈的深度为 2n。

代码实现

方法:回溯

# 括号生成(回溯) def generate_parenthesis(n): result = [] def backtrack(path, left, right): if len(path) == 2 * n: result.append(path) return if left < n: backtrack(path + '(', left + 1, right) if right < left: backtrack(path + ')', left, right + 1) backtrack('', 0, 0) return result # 测试 def test_generate_parenthesis(): n = 3 print(generate_parenthesis(n)) # 输出:['((()))', '(()())', '(())()', '()(())', '()()()'] if __name__ == "__main__": test_generate_parenthesis()

测试用例

测试用例 1:基本情况

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

测试用例 2:n=1

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

总结

括号生成是一个经典的回溯算法问题,它可以通过回溯算法来高效地解决。

回溯算法的核心思想是:维护左右括号的数量,在选择时确保右括号的数量不超过左括号的数量。

掌握回溯算法的使用方法,对于解决类似的问题非常重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 22:31:33

5分钟学会清理Windows驱动垃圾:DriverStoreExplorer完全指南

5分钟学会清理Windows驱动垃圾&#xff1a;DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来越少&#xff0c;却找不到罪魁…

作者头像 李华
网站建设 2026/5/9 22:30:33

OmniBox:构建私有AI知识中枢的RAG架构与部署实践

1. 项目概述&#xff1a;一个全能的AI知识中枢如果你和我一样&#xff0c;每天被海量的信息淹没——浏览器标签页开了一堆&#xff0c;PDF、文档、会议录音散落在各处&#xff0c;想找某个知识点时却像大海捞针——那你一定需要一个能帮你“收集一切&#xff0c;然后提问”的工…

作者头像 李华
网站建设 2026/5/9 22:23:37

CANN算子库变更日志

CHANGELOG 【免费下载链接】ops-transformer 本项目是CANN提供的transformer类大模型算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-transformer 本文档记录各版本的重要变更&#xff0c;版本按时间倒序排列。 8.5.0-beta.1 发布…

作者头像 李华
网站建设 2026/5/9 22:23:35

CANN/pypto log1p函数API文档

&#xfeff;# pypto.log1p 【免费下载链接】pypto PyPTO&#xff08;发音: pai p-t-o&#xff09;&#xff1a;Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训…

作者头像 李华
网站建设 2026/5/9 22:09:09

可信AI评估体系构建:从欧盟七原则到工程实践落地

1. 项目概述&#xff1a;为什么我们需要一套“可信AI”的标尺&#xff1f;最近几年&#xff0c;AI技术&#xff0c;特别是大模型&#xff0c;已经从实验室的“黑科技”变成了我们工作、生活中触手可及的工具。但随之而来的&#xff0c;是一系列让人既兴奋又不安的问题&#xff…

作者头像 李华
网站建设 2026/5/9 22:08:29

CANN/pto-isa数据搬运优化

数据搬运优化 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend p…

作者头像 李华