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

力扣22. 括号生成

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

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

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

回溯法:

class Solution {
public:vector<string> ret;string s;//存储某一个组合//left:剩余的左括号数量//right:剩余的右括号数量void dfs(int left,int right,string& s){if(!left&&!right){ret.push_back(s);return;}if(left){s.push_back('(');dfs(left-1,right,s);s.pop_back();}if(right&&left<right){s.push_back(')');dfs(left,right-1,s);s.pop_back();}}vector<string> generateParenthesis(int n) {dfs(n,n,s);return ret;}
};

执行顺序:

dfs(2, 2, "")  // 初始调用
├── dfs(1, 2, "(")  // 选择左括号
│   ├── dfs(0, 2, "((")  // 选择左括号
│   │   ├── dfs(0, 1, "(()")  // 选择右括号
│   │   │   ├── dfs(0, 0, "(())")  // 选择右括号
│   │   │   │   ├── ret.push_back("(())")  // 保存结果
│   │   │   │   └── 回溯: s.pop_back()  // s = "(()"
│   │   │   └── 回溯: s.pop_back()  // s = "(("
│   │   └── 回溯: s.pop_back()  // s = "("
│   ├── dfs(1, 1, "()")  // 选择右括号
│   │   ├── dfs(0, 1, "()(")  // 选择左括号
│   │   │   ├── dfs(0, 0, "()()")  // 选择右括号
│   │   │   │   ├── ret.push_back("()()")  // 保存结果
│   │   │   │   └── 回溯: s.pop_back()  // s = "()("
│   │   │   └── 回溯: s.pop_back()  // s = "()"
│   │   └── 回溯: s.pop_back()  // s = "("
│   └── 回溯: s.pop_back()  // s = ""
└── // dfs(2, 1, ")") - invalid,不执行
                      dfs(2, 2, "")/                \dfs(1, 2, "(")       // dfs(2, 1, ")") - invalid,因为左括号数量不能大于右括号数量/           \dfs(0, 2, "((")    dfs(1, 1, "()")|                      |dfs(0, 1, "(()")  dfs(0, 1, "()(")|                      |
dfs(0, 0, "(())")  dfs(0, 0, "()()")|                      |
ret.push_back("(())")  ret.push_back("()()")

相关文章:

力扣22. 括号生成

数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且有效的括号组合。 示例 1&#xff1a;输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()","()(())","()()(…...

检测窗口是否最大化兼容 Win10/11

检测窗口是否最大化&#xff08;窗口覆盖或独占全屏&#xff09;兼容 Win10/11 问题描述 在 Win10/11 上有很多 UWP 进程&#xff0c;检测窗口是否最大化将迎来新的挑战。这些窗口以其不能够使用 Win32 的 IsWindowVisible 获取窗口可见性为特征。此时&#xff0c;必须使用 D…...

【qsort函数】

前言 我们要学习qsort函数并利用冒泡函数仿照qsort函数 首先我们要了解一下qsort&#xff08;快速排序&#xff09; 这是函数的的基本参数 void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*)); 简单解释一下 base&#xff1a;指向…...

python类元编程示例-使用类型注解来检查转换属性值的类框架

用三种方式实现使用类型注解来检查转换属性值的类框架 1 __init_subclass__方式 1.1 代码实现 from collections.abc import Callable # <1> from typing import Any, NoReturn, get_type_hints from typing import Dict, Typeclass Field:def __init__(self, name: …...

Python3 笔记:字符串的 zfill() 和 rjust()

1、zfill() 方法返回指定长度的字符串&#xff0c;原字符串右对齐&#xff0c;前面填充0。 语法&#xff1a;str.zfill(width) width &#xff1a;指定字符串的长度。原字符串右对齐&#xff0c;前面填充0。 str1 2546 str2 2 print(str1.zfill(10)) # 运行结果&#xff1…...

SpringBoot项目启动提示端口号占用

Windows环境下&#xff0c;SpringBoot项目启动时报端口号占用&#xff1a; *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop the proc…...

音视频开发23 FFmpeg 音频重采样

代码实现的功能 目的是 将&#xff1a; 一个采样率为 44100&#xff0c;采样通道为 2&#xff0c;格式为 AV_SAMPLE_FMT_DBL 的 in.pcm 数据 转换成 一个采样率为 48000&#xff0c;采样通道为 1&#xff0c;格式为 AV_SAMPLE_FMT_S16 的 out.pcm 数据 1.重采样 1.1 为什么要重…...

windows系统下安装fnm

由于最近做项目要切换多个node版本&#xff0c;查询了一下常用的有nvm和fnm这两种&#xff0c;对比了一下选择了fnm。 下载fnm 有两种方式&#xff0c;目前最新版本是1.37.0&#xff1a; 1.windows下打开powershell&#xff0c;执行以下命令下载fnm winget install Schniz.f…...

【Linux网络】传输层协议 - UDP

文章目录 一、传输层&#xff08;运输层&#xff09;运输层的特点复用和分用再谈端口号端口号范围划分认识知名端口号&#xff08;Well-Know Port Number&#xff09;两个问题① 一个进程是否可以绑定多个端口号&#xff1f;② 一个端口号是否可以被多个进程绑定&#xff1f; n…...

debugger(四):源代码

〇、前言 终于来到令人激动的源代码 level 了&#xff0c;这里将会有一些很有意思的算法&#xff0c;来实现源代码级别的调试&#xff0c;这将会非常有趣。 一、使用 libelfin 库 我们不可能直接去读取整个 .debug info 段来进行设置&#xff0c;这是没有必要的&#xff0c;…...

基于运动控制卡的圆柱坐标机械臂设计

1 方案简介 介绍一种基于运动控制卡制作一款scara圆柱坐标的机械臂设计方案&#xff0c;该方案控制器用运动控制卡制作一台三轴机械臂&#xff0c;用于自动抓取和放料操作。 2 组成部分 该机械臂的组成部分有研华运动控制卡&#xff0c;触摸屏&#xff0c;三轴圆柱坐标的平面运…...

MongoDBTemplate-基本文档查询

文章目录 流程概述步骤1&#xff1a;创建一个MongoDB的连接步骤2&#xff1a;创建一个查询对象Query步骤3&#xff1a;设置需要查询的字段步骤4&#xff1a;使用查询对象执行查询操作 流程概述 步骤描述步骤1创建一个MongoDB的连接步骤2创建一个查询对象Query步骤3设置需要查询…...

23种设计模式——创建型模式

设计模式 文章目录 设计模式创建型模式单例模式 [1-小明的购物车](https://kamacoder.com/problempage.php?pid1074)工厂模式 [2-积木工厂](https://kamacoder.com/problempage.php?pid1076)抽象⼯⼚模式 [3-家具工厂](https://kamacoder.com/problempage.php?pid1077)建造者…...

idm究竟有哪些优势

IDM&#xff08;Internet Download Manager&#xff09;是一款广受好评的下载管理工具&#xff0c;其主要优势包括&#xff1a; 高速下载&#xff1a;IDM支持最大32线程的下载&#xff0c;可以显著提升下载速度1。文件分类下载&#xff1a;IDM可以根据文件后缀进行分类&#x…...

如何学习Golang语言!

第一部分&#xff1a;Go语言概述 起源与设计哲学&#xff1a;Go语言由Robert Griesemer、Rob Pike和Ken Thompson三位Google工程师设计&#xff0c;旨在解决现代编程中的一些常见问题&#xff0c;如编译速度、运行效率和并发编程。主要特点&#xff1a;Go语言的语法简单、编译…...

Redis系列之淘汰策略介绍

Redis系列之淘汰策略介绍 文章目录 为什么需要Redis淘汰策略&#xff1f;Redis淘汰策略分类Redis数据淘汰流程源码验证淘汰流程Redis中的LRU算法Redis中的LFU算法 为什么需要Redis淘汰策略&#xff1f; 由于Redis内存是有大小的&#xff0c;当内存快满的时候&#xff0c;又没有…...

sql 调优

sql 调优 SQL调优是一个复杂的过程&#xff0c;涉及多个方面&#xff0c;包括查询优化、索引优化、表结构优化等。以下是一些基本的SQL调优策略&#xff1a; 使用索引&#xff1a;确保查询中涉及的列都有适当的索引。 查询优化&#xff1a;避免使用SELECT *&#xff0c;只选取…...

【UML用户指南】-13-对高级结构建模-包

目录 1、名称 2、元素 3、可见性 4、引入与引出 用包把建模元素安排成可作为一个组来处理的较大组块。可以控制这些元素的可见性&#xff0c;使一些元素在包外是可见的&#xff0c;而另一些元素要隐藏在包内。也可以用包表示系统体系结构的不同视图。 狗窝并不复杂&#x…...

前端面试题日常练-day63 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. TypeScript中&#xff0c;以下哪个关键字用于声明一个类的构造函数&#xff1f; a) constructor b) init c) create d) initialize 2. 在TypeScript中&#xff0c;以下哪个符号用于声明可选的函…...

GAN的入门理解

这一篇主要是关于生成对抗网络的模型笔记&#xff0c;有一些简单的证明和原理&#xff0c;是根据李宏毅老师的课程整理的&#xff0c;下面有链接。本篇文章主要就是梳理基础的概念和训练过程&#xff0c;如果有什么问题的话也可以指出的。 李宏毅老师的课程链接 1.概述 GAN是…...

深入探索Java JPA中的CriteriaQuery

在Java持久化API(JPA)中,CriteriaQuery 提供了强大的查询功能,允许我们以面向对象的方式构建动态查询。今天我们将通过一个实际的例子,深入探讨如何使用CriteriaQuery来获取特定书籍的最新更新ID。 什么是CriteriaQuery? CriteriaQuery是JPA的一部分,它提供了一种类型…...

06_Cursor之上下文管理与代码库理解

关键字&#xff1a;上下文管理, 代码库理解, 符号引用, Git集成, 图像上下文, Cursor 06_Cursor之上下文管理与代码库理解 Cursor知识体系 Cursor知识体系&#xff08;续&#xff09; | -- 上下文管理层 | -- 代码库级理解 | | -- 项目结构分析 | | -- 依赖关系追…...

javaweb企业员工公务车辆管理系统

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分用车流程管理数据统计与报表系统管理功能技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 员工管理模…...

GLM-4v-9b多图对比分析:上传两张产品图→自动识别差异点→生成结构化对比报告

GLM-4v-9b多图对比分析&#xff1a;上传两张产品图→自动识别差异点→生成结构化对比报告 1. 产品对比分析的新选择 在日常工作中&#xff0c;我们经常需要对比两个相似的产品图片——可能是不同版本的设计稿、竞品分析、或者产品质量检查。传统方法需要人工逐像素比对&#…...

有了这个Python备忘录,代码拿来即用

这段时间代码写的少了&#xff0c;周末用python写一个小爬虫&#xff0c;却发现连线程的一些方法都不记得了&#xff0c;还得百度查教程。工作越忙&#xff0c;记性越差&#xff0c;发现我疏远了代码&#xff0c;代码也疏远了我。 PS&#xff1a;对于小白来说自学也不是件容易…...

杰理之关机DAC未进入高阻【篇】

memset(JL_ADDA, 0x0, sizeof(JL_ADDA_TypeDef)); SFR(JL_ADDA->DAA_CON2, 15, 1, 1); SFR(JL_ADDA->DAA_CON2, 5, 1, 1);...

新手学吉他必看,这5个常见误区,避开了少走3个月弯路

经常会看到很多新手学吉他&#xff0c;学着学着就卡壳学不下去了&#xff0c;不是嫌按弦手疼&#xff0c;就是曲子弹不下去。特别是一些自学的朋友&#xff0c;网上随便东找些课&#xff0c;西看些视频&#xff0c;学下来进步很慢&#xff0c;3个月之后就改打“退堂鼓”了。其实…...

依赖p4est库的程序windows运行方法----支持vs2022调试

一.前置环境 1.vs2022且包含CLangCL工具集&#xff0c;没有安的在vs的intaller里边修改已安装的vs2022&#xff0c;在右侧目录里勾选上&#xff08;使用c进行桌面开发/适用于windows的CClang工具&#xff09;。 2.安装MS-MPI,安在默认位置即可&#xff08;https://www.micros…...

BLE HID库:嵌入式设备实现HID-over-GATT的轻量级方案

1. BLE_HID 库概述&#xff1a;面向嵌入式设备的 HID-over-GATT 实现BLE_HID 是一个专为资源受限嵌入式平台设计的轻量级开源库&#xff0c;其核心目标是将传统 USB HID&#xff08;Human Interface Device&#xff09;协议栈无缝迁移至 Bluetooth Low Energy&#xff08;BLE&a…...

GESP到底有没有必要考?说说我的真实看法

“老师&#xff0c;GESP要不要考&#xff1f;考了能免考CSP初赛&#xff0c;值不值&#xff1f;” 每次信奥赛家长群里一聊到这个&#xff0c;就会吵起来。 有人说"CCF官方的&#xff0c;含金量高&#xff0c;必须考"。也有人说"证书没用&#xff0c;浪费钱浪费…...