当前位置: 首页 > article >正文

算法刷题Day23:BM60 括号生成

题目链接

描述:给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
“((()))”, “(()())”, “(())()”, “()()()”, “()(())”

思路:

回溯左子树不断添加‘(’,右子树不断添加 ‘)’。但为了保证合法,必须每个节点的左括号数量都大于右括号。因此用两个数记录左右子树的左括号个数和右括号个数

代码:

# 使用回溯递归,加左括号,然后加右括号
res = []
def dfs(n,left, right,path_str):
    if left==n and right == n:
        print(path_str)
        res.append(path_str)
        return
    if left < n:
        dfs(n,left+1, right, path_str+"(")
    if right < left and right <n:
        dfs(n, left, right+1,path_str+')')
    
class Solution:
    # 
    def generateParenthesis(self , n: int) -> List[str]:
        # write code here
        dfs(n,0,0,"")
        return res

http://www.kler.cn/a/447301.html

相关文章:

  • BERT的改进:ModernBERT
  • API开发:Flask VS FastAPI
  • 基于Spring Boot的找律师系统
  • HUAWEI-eNSP交换机链路聚合(手动负载分担模式)
  • 【Leecode】Leecode刷题之路第87天之扰乱字符串
  • 多音轨视频使用FFmpeg删除不要音轨方法
  • CSS学习记录18
  • 什么是事务?隔离级别
  • 嵌入式单片机中外设的基本控制与实现
  • 游戏开发技能系统常用概念
  • Kafka 迁移 AutoMQ 时 Flink 位点管理的挑战与解决方案
  • 基于Spring Boot的智慧农业专家远程指导系统
  • 如何使用 Python 连接 MySQL 数据库?
  • Websocket客户端始终连接不上Server排查之Openai Realtime api
  • 基于 STM32 的多路火灾报警系统设计
  • LeetCode hot100-91
  • 高性能MySQL-查询性能优化
  • 标准库与HAL库的区别
  • 常用的缓存技术都有哪些
  • CodeSurfer 介绍
  • 青少年编程与数学 02-004 Go语言Web编程 08课题、使用Gin框架
  • 雅思真题短语梳理(一)
  • 9596 回文数 存档40%
  • 使用Electron获取用户信息,监听程序打开,用户退出连接关闭程序【全代码,有图】
  • Redis应用缓存框架
  • Spring如何解决bean的循环依赖