leetcode括号生成

题目描述

在这里插入图片描述

解题思路

首先看到题目,一开始是并没有思路的。这时候可以在纸上进行演算一下结果。当只有一对括号的时候,我们可以得知结果[“()”],当有两对括号的时候,我们可以发现,括号在第一个基础上,要么在括号内部出现,要么在括号外部出现。用公式来表达就是(+p+)+q。p和q代表的是一对括号可能存在的地方。以此类推,当有n对括号的时候,假设p=i,q=n-i-1。这时候大家应该知道这题目是怎么一回事了,这时候就是需要我们实现这一个过程。首先,我们需要定义一个列表,这个列表中存放着所有的括号存在的情况,下标就代表第i个括号对对应的情况。具体如下:
首先检查输入的 n 是否为 0,如果是,则直接返回一个空列表 [],因为在这种情况下无法生成有效的括号组合。

初始化一个列表 result,用于存储不同组合情况下的括号序列。首先将空字符串 “” 和单对括号 () 分别作为 n=0 和 n=1 时的初始情况加入到 result 中。

接下来,对于 n 从 2 到输入的 n 的范围进行循环,依次生成包含 n 对括号的有效括号组合。

在每一轮循环中,通过两个嵌套的循环,分别遍历内部括号和外部括号的组合情况。对于每一对内外括号组合,将内部括号组合和外部括号组合进行组合,形成新的括号序列,并将这些新的括号序列添加到 new_combinations 列表中。

将生成的新的括号序列列表 new_combinations 添加到 result 中,以便在下一轮循环中使用。

最后,返回 result[n],即包含 n 对括号的有效括号组合列表

代码如下

from typing import Listclass Solution:def generateParenthesis(self, n: int) -> List[str]:if n == 0:return []result = []result.append([""])  # 初始化n=0和n=1时的情况result.append(["()"])for i in range(2, n + 1):new_combinations = []for j in range(i):inside = result[j]outside = result[i - 1 - j]for inside_str in inside:for outside_str in outside:new_combinations.append("(" + inside_str + ")" + outside_str)result.append(new_combinations)return result[n]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505265.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实例驱动计算机网络

文章目录 计算机网络的层次结构应用层DNSHTTP协议HTTP请求响应过程 运输层TCP协议TCP协议面向连接实现TCP的三次握手连接TCP的四次挥手断开连接 TCP协议可靠性实现TCP的流量控制TCP的拥塞控制TCP的重传机制 UDP协议 网际层IP协议(主机与主机)IP地址的分类…

JavaSec 基础之 JNDI 注入

文章目录 JNDI简介JNDI 支持的服务协议JNDI 注入JNDI 复现修复 JNDI 简介 JNDI(Java Naming and Directory Interface)是一个应用程序设计的 API,一种标准的 Java 命名系统接口。JNDI 提供统一的客户端 API,通过不同的访问提供者接口JNDI服务供应接口(…

three.js 叉乘判断物体在人前左,前右,后左、后右

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div style"padding: 10px;text-align: left;">叉乘判断物体…

SpringBoot整合SpringSecurity

什么是SpringSecurity&#xff1f; Spring Security是Spring提供的一套web的应用安全性的完整解决方案。 SpringSecurity采用责任式链的设计模式&#xff0c;它的核心是一组过滤器链。 主要包括&#xff1a; 认证&#xff08;Authentication&#xff09;&#xff1a;什么是…

【递归】【回溯】Leetcode 112. 路径总和 113. 路径总和 II

【递归】【回溯】Leetcode 112. 路径总和 113. 路径总和 II 112. 路径总和解法&#xff1a;递归 有递归就有回溯 记得return正确的返回上去 113. 路径总和 II解法 递归 如果需要搜索整棵二叉树&#xff0c;那么递归函数就不要返回值 如果要搜索其中一条符合条件的路径&#xff…

vue中将某个不太规则的json转成对象,或者将对象转成json字符串

vue中将某个不太规则的json转成对象&#xff0c;或者将对象转成json字符串 以我自己做的项目某个不规则的json为例 将json对象转成json字符串&#xff1a; JSON.stringify(jsonData); 将不规则json字符串转成对象并获取对应的属性的值&#xff1a; JSON.parse(jsonData).Name…

详细了解C++中的namespace命名空间

键盘敲烂&#xff0c;月薪过万&#xff0c;同学们&#xff0c;加油呀&#xff01; 目录 键盘敲烂&#xff0c;月薪过万&#xff0c;同学们&#xff0c;加油呀&#xff01; 一、命名空间的理解 二、&#xff1a;&#xff1a;作用域运算符 三、命名空间&#xff08;namespace&…

双周回顾#007 - 前端与后端

前端的问题不是难&#xff0c;而是它面对最终用户。只要用户的喜好和口味发生变化&#xff0c;前端就必须跟上。 这导致前端不得不快速变化&#xff0c;因为用户的口味正在越来越快地改变。 后端不需要面对最终用户&#xff0c;需要解决的都是一些经典的计算机科学问题&#…

第16章-DNS

目录 1. 域名 1.1 产生背景 1.2 概述 1.3 域名的树形层次化结构 2. DNS 2.1 概述 2.2 工作机制 3. DNS查询模式 3.1 递归查询&#xff1a; 3.2 迭代查询&#xff1a; 4. 相关知识点 4.1 集中式DNS 4.2 国内通用DNS 4.3 配置DNS代理 1. 域名 1.1 产生背景 ① IP…

DataIntegrityViolationException异常产生原因及解决方案

DataIntegrityViolationException异常产生原因及解决方案 01 异常的发生场景 在我新写了一个接口之后出现的 //org.springframework.dao.DataIntegrityViolationException日志报错的意思是参数设置了一个错误的值 02 异常的产生及其原因 我最开始认为是MySQL数据库表设计…

JMeter性能测试基本过程及示例

jmeter 为性能测试提供了一下特色&#xff1a; jmeter 可以对测试静态资源&#xff08;例如 js、html 等&#xff09;以及动态资源&#xff08;例如 php、jsp、ajax 等等&#xff09;进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的…

Acwing 每日一题 空调 差分 贪心

&#x1f468;‍&#x1f3eb; 空调 &#x1f468;‍&#x1f3eb; 参考题解 import java.util.Scanner;public class Main {static int N (int) 1e5 10;static int[] a new int[N];static int n;public static void main(String[] args){Scanner sc new Scanner(System.…