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

LeetCode.22。括号生成

题目描述:

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组

输入输出实例:

思路:对于这道题目我们可以用回溯法,创建一个函数backtrack(当前字符,左括号数量,右括号数量),这个函数用来递归生成所有的括号组成可能。我们先前创立一个空列表,在backtrack递归过程中满足条件的我们放到列表中,最后返回列表。

在backtrack中,如果当前的字符组成满足长度等于2*n的时候,我们得到一个有效的括号组成,将其加到ans列表;如果当前左括号比n少,我们继续添加左括号;如果当前右括号比左括号少,我们添加右括号。

比如当n==2时候,我们先是添加一个左括号->再添加左括号->再添加右括号->再添加右括号->满足条件将‘(())'存入ans。然后返回到'('尝试添加右括号(即'()')->再添加左括号->再添加右括号->将’()()‘存入ans->递归结束,return ans

class Solution:def generateParenthesis(self, n: int) -> List[str]:#构建函数backtrack用来构建有效括号组合def backtrack(s:str,left:int,right:int):#达到目标长度放入if len(s) == 2*n:ans.append(s)return#左括号数量不够可加左括号if left < n :backtrack(s+'(',left+1,right)#右括号不足加右括号if right < left :backtrack(s+')',left,right+1)ans = []backtrack('',0,0)return ans

 


http://www.mrgr.cn/news/751.html

相关文章:

  • 下载 kotlin compiler embeddable 巨慢的问题
  • 数据驱动增长,实时监控商品信息是关键 —— 淘宝API的实战应用“
  • Go语言基础---运算符
  • tcpdump入门——四次挥手
  • 【大模型从入门到精通19】开源库框架LangChain LangChain文档加载器1
  • 对外提供开放式数据查询存储服务的成本考量
  • 网络丢包深度解析:影响、原因及优化策略
  • MySQL InnoDB中一个update语句从执行到提交的全过程(1)
  • 【242. 有效的字母异位词 简单】
  • 微服务:网关路由和登录校验
  • Angular网络请求
  • 显示窗口部件(Display Widgets)-Qt-思维导图-学习笔记
  • 从0开始搭建vue + flask 旅游景点数据分析系统(九):旅游景点管理之增删改查
  • Qt找不到QSound头文件,头文件QSoundEffect
  • 【面向对象】01类与对象及两者区别 简单认识方法
  • Python模块篇(五)
  • 推送本地windows环境镜像到阿里云镜像仓库
  • saas服务,对同一个功能,需要使用不同客户的接口。那么哪种设计模式可以解决我的问题?
  • 赋能未来制造:三品图文档管理软件在大连船推图文档管理中的深度应用与成效
  • CentOS 7的安装流程