专题四:综合练习(括号组合算法深度解析)

以leetcode22题为例

题目分析:

给一个数字n,返回合法的所有的括号组合 

算法原理分析:

你可以先考虑如何不重不漏的罗列所有的括号组合

清楚什么是有效的括号组合???

1.所有的左括号的数量等于右括号的数量

2.从头开始的所有子串,左括号的数量>=右括号的数量(注意我说的是子串,而且是从头开始)

决策树的画法如下:

你每填一个位置的时候都要想一想是否符合有效的括号组合的两条性质

不符合的就可以剪枝

设计代码:

1.全局变量:我们需要返回一个字符串数组,所以需要一个ret去统计每个叶子结点

                     我们需要一个path去统计是否到了叶子结点,如果到了就放到ret中

                    我在设计剪枝的时候发现问题,我需要知道左括号和右括号的数量

                    所以我设计一个全局变量left和right分别表示左右括号的数量

2.dfs函数:关心每一个结点所做的事情,就是枚举左括号和右括号看哪一个符合,然后是否加到                       path的后面

3.细节:回溯:回上一层只需要path.pop_back()即可,还要把left和right里面的括号数量处理

              剪枝:这里我们选择只关心合法的分支

                         左括号的选择:只要还可以选择就一直选(left<n/2)

                         右括号的选择:只要还可以选&&left>right

代码编写:

注意我的dfs函数设计的n是左括号和右括号的数量和

所有我传参的时候是n*2; 

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

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

相关文章

星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡

星云智控自定义物联网实时监控模板-为何成为痛点&#xff1f;物联网设备的多样化-优雅草卓伊凡 引言&#xff1a;物联网监控的模板革命 在万物互联的时代&#xff0c;设备监控已成为保障物联网系统稳定运行的核心环节。传统的标准化监控方案正面临着设备类型爆炸式增长带来的…

5.27本日总结

一、英语 复习list2list29 二、数学 学习14讲部分内容 三、408 学习计组1.2内容 四、总结 高数和计网明天结束当前章节&#xff0c;计网内容学完之后主要学习计组和操作系统 五、明日计划 英语&#xff1a;复习lsit3list28&#xff0c;完成07年第二篇阅读 数学&#…

几种运放典型应用电路

运算放大器简称:OP、OPA、OPAMP、运放。 一、电压跟随器 电压跟随器顾名思义运放的输入端电压与运放的输出电压相等 这个电路一般应用目的是增加电压驱动能力: 比如说有个3V电源,借一个负载,随着负载电流变大,3V就会变小说明3V电源带负载能力小,驱动能力弱,这个时候…

Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析

1. 引言 在 Android 系统中&#xff0c;ActivityManagerService (AMS)、WindowManagerService (WMS) 和 PackageManagerService (PMS) 是三个最核心的系统服务&#xff0c;它们分别管理着应用的生命周期、窗口显示和应用包管理。 但你是否知道&#xff0c;这些服务并不是独立…

从另一个视角理解TCP握手、挥手与可靠传输

本文将深入探讨 TCP 协议中三次握手、四次挥手的原理&#xff0c;以及其保证可靠传输的机制。 一、三次握手&#xff1a;为何是三次&#xff0c;而非两次&#xff1f; 建立 TCP 连接的过程犹如一场严谨的 “对话”&#xff0c;需要经过三次握手才能确保通信双方的可靠连接。 三…

将Docker compose 部署的夜莺V6版本升到V7版本的详细步骤、常见问题解答及相关镜像下载地址

环境说明 夜莺官网&#xff1a;首页 - 快猫星云Flashcat 夜莺安装程序下载地址&#xff1a;快猫星云下载中心 夜莺v7.7.2镜像&#xff08;X86架构&#xff09;&#xff1a; https://download.csdn.net/download/jjk_02027/90851161 夜莺ibex v1.2.0镜像&#xff08;X86架构…

JavaScript【4】数组和其他内置对象(API)

1.数组: 1.概述: js中数组可理解为一个存储数据的容器,但与java中的数组不太一样;js中的数组更像java中的集合,因为此集合在创建的时候,不需要定义数组长度,它可以实现动态扩容;js中的数组存储元素时,可以存储任意类型的元素,而java中的数组一旦创建后,就只能存储定义类型的元…

永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!

作为全球领先的开源实时数据仓库&#xff0c; Apache Doris Github Stars 已超过 13.6k&#xff0c;并在 5000 余家中大型企业生产环境得到广泛应用&#xff0c;支撑业务核心场景&#xff0c;成为众多企业数据分析基础设施不可或缺的重要基座。过去&#xff0c;Apache Doris 用…

数字万用表与指针万用表使用方法及注意事项

在电子测量领域&#xff0c;万用表是极为常用的工具&#xff0c;数字万用表和指针万用表各具特点。熟练掌握它们的使用方法与注意事项&#xff0c;能确保测量的准确性与安全性。下面为您详细介绍&#xff1a; 一 、数字万用表按钮功能 > 进入及退出手动量程模式 每 按 […

深度学习Dropout实现

深度学习中的 Dropout 技术在代码层面上的实现通常非常直接。其核心思想是在训练过程中&#xff0c;对于网络中的每个神经元&#xff08;或者更精确地说&#xff0c;是每个神经元的输出&#xff09;&#xff0c;以一定的概率 p 随机将其输出置为 0。在反向传播时&#xff0c;这…

AtCoder AT_abc406_c [ABC406C] ~

前言 除了 A 题&#xff0c;唯一一道一遍过的题。 题目大意 我们定义满足以下所有条件的一个长度为 N N N 的序列 A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\dots,A_N) A(A1​,A2​,…,AN​) 为波浪序列&#xff1a; N ≥ 4 N\ge4 N≥4&#xff08;其实满足后面就必须满足这…

Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践

背景&#xff1a;为什么安全响应头至关重要&#xff1f; 在 Web 安全领域&#xff0c;响应头&#xff08;Response Headers&#xff09;是防御 XSS、点击劫持、跨域数据泄露等攻击的第一道防线。通过合理配置响应头&#xff0c;可强制浏览器遵循安全策略&#xff0c;限制恶意行…

如何停止终端呢?ctrl+c不管用,其他有什么方法呢?

如果你在终端中运行了一个程序&#xff08;比如 Python GUI tkinter 应用&#xff09;&#xff0c;按下 Ctrl C 没有作用&#xff0c;一般是因为该程序&#xff1a; 运行了主事件循环&#xff08;例如 tkinter.mainloop()&#xff09; 或 在子线程中运行&#xff0c;而 Ctrl …

深入解析 React 的 useEffect:从入门到实战

文章目录 前言一、为什么需要 useEffect&#xff1f;核心作用&#xff1a; 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []&#xff1a;2.无依赖项&#xff08;空&#xff09;3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…

Ubuntu 更改 Nginx 版本

将 1.25 降为 1.18 先卸载干净 # 1. 完全卸载当前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理残留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改仓库地址 # 添加仓库&#xff08;通用稳定版仓库&#xff09; codename$(…

如何在 Windows 10 或 11 中安装 PowerShellGet 模块?

PowerShell 是微软在其 Windows 操作系统上提供的强大脚本语言,可用于通过命令行界面自动化各种任务,适用于 Windows 桌面或服务器环境。而 PowerShellGet 是 PowerShell 中的一个模块,提供了用于从各种来源发现、安装、更新和发布模块的 cmdlet。 本文将介绍如何在 PowerS…

NBA足球赛事直播源码体育直播M33模板赛事源码

源码名称&#xff1a;体育直播赛事扁平自适应M33直播模板源码 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无需人工操作&#xff01; 演示地址&#xff1a;NBA足球赛事直播源码体育直播M33模板赛事…

【Python】魔法方法是真的魔法! (第二期)

还不清楚魔术方法&#xff1f; 可以看看本系列开篇&#xff1a;【Python】小子&#xff01;是魔术方法&#xff01;-CSDN博客 【Python】魔法方法是真的魔法&#xff01; &#xff08;第一期&#xff09;-CSDN博客 在 Python 中&#xff0c;如何自定义数据结构的比较逻辑&…

Qt 强大的窗口停靠浮动

1、左边&#xff1a; 示例代码&#xff1a; CDockManager::setConfigFlags(CDockManager::DefaultOpaqueConfig); CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); dockManager new CDockManager(this); // Disabling the Internal Style S…

Linux进程异常退出排查指南

在 Linux 中&#xff0c;如果进程无法正常终止&#xff08;如 kill 命令无效&#xff09;或异常退出&#xff0c;可以按照以下步骤排查和解决&#xff1a; 1. 常规终止进程 尝试普通终止&#xff08;SIGTERM&#xff09; kill PID # 发送 SIGTERM 信号&#xff08;…