刷题小记11:栈队列

包括单调栈和优先队列

232. 用栈实现队列

用栈实现队列

两个栈

入队:向入队栈中加入元素 

出队:从出队栈中出栈元素,如果出队栈为空,将入队栈所有元素入栈到出队栈。这样顺序就对了

225. 用队列实现栈 

 用队列实现栈

优化

其实这道题目就是用一个队列就够了。

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

20.有效的括号

有效的括号

遍历字符串

如果是左括号,将对应右括号入栈,方便对比出栈

如果栈为空(左右括号数量不一致),或当前右括号与栈顶元素不匹配,返回false

遍历括号串结束,如果栈未空,也是左右括号数量不一致

1047.删除字符串中的所有相邻重复项

删除字符串中的所有相邻重复项

遍历字符串

如果栈不为空,且字符等于 栈顶字符(上一次加入的字符),说明该字符重复(连续出现2次)

不加入该字符,并且将与其重复的字符出栈,并删除

只用StringBuilder也可以直接模拟栈

sb.append(ch);

sb.deleteCharAt(sb.length() - 1);

155.最小栈

最小栈

两个栈做法

一个栈去保存正常的入栈出栈的值,另一个栈去存最小值,也就是用栈顶保存当前所有元素的最小值。

对于存最小值的栈:

新加入的元素如果大于栈顶元素,那么新加入的元素就不处理。

新加入的元素如果小于等于栈顶元素,那么就将新元素入栈。

出栈元素不等于栈顶元素,不操作。

出栈元素等于栈顶元素,那么就将栈顶元素出栈。

一个栈做法

只用一个变量去保存最小值

如果只用一个变量就会遇到一个问题,如果把 min 更新 了,那么之前的最小值 就丢失了。

怎么把 之前的最小值  保存起来呢?解决办法:把它在 新最小值 之前压入栈中即可。

150.逆波兰表达式

逆波兰表达式求值

逆波兰表达式:是一种后缀表达式,所谓后缀就是指运算符写在后面

平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )

该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )

用栈操作运算:

遇到数字则入栈;

遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中

394.字符串解码

394. 字符串解码

看到括号的匹配,首先应该想到的就是用栈来解决问题

括号内嵌套括号,需要从内向外生成与拼接字符串,这与栈的先入后出特性对应

单调栈

739.每日温度

每日温度

遍历温度数组:

  • 从第二天开始,检查当前温度与栈顶索引对应的温度:
    • 如果当前温度小于等于栈顶温度,说明需要继续等待,将当前索引压入栈。
    • 如果当前温度大于栈顶温度,进入循环:
      • 计算从栈顶索引到当前索引的天数差,并更新结果数组。
      • 弹出栈顶索引,继续检查栈中的其他索引。

496. 下一个更大元素 I 

下一个更大元素 I

遍历第二个数组,HashMap 记录 每个数字及其下一个更大数字(单调栈查找)的键值对

再遍历第一个数组 用 map 填充答案数组

503.下一个更大的元素 II

下一个更大元素 II

在循环数组中找下一个更大元素

思路:循环一次就知道下一个比他大的数,取余即可得到原来的索引

84. 柱状图中最大的矩形

柱状图中最大的矩形

由暴力两边开花做法想到单调栈做法

42. 接雨水

接雨水

优先队列

什么是优先级队列呢?

其实就是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。

347.前K个高频元素

前 K 个高频元素

首先统计元素出现的频率,这一类的问题可以使用map来进行统计。

然后是对频率进行排序,使用容器优先级队列

295.数据流的中位数

要想在 O(1) 的复杂度内取得当前中位数,可以把数据流分为左右两段

295. 数据流的中位数

左边一段是大顶堆

右边一段是小顶堆

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

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

相关文章

【Qt问题】解决 Cannot retrieve debugging output

【Qt问题】解决 Cannot retrieve debugging output Chapter1 【Qt问题】解决 Cannot retrieve debugging output方案1 关闭其他Qt工程实例(等于没说)方案2 在PRO文件中,加上CONFIG console Chapter1 【Qt问题】解决 Cannot retrieve debuggi…

git 提交代码流程

1. 公-->私-->本-->私-->公 缺点:多了一个步骤,就多了一次申请时间,首先在公仓申请合并到私仓,私仓同意合并,获取到公仓最新版本; 优点:不容易污染公仓 2. 公-->本-->私--&…

Java 中的 transient 关键字:深入解析与实战

在 Java 编程中,transient 关键字是一个非常有用的工具,尤其是在处理对象序列化时。尽管 transient 关键字在日常开发中可能不常被使用,但了解它的作用和使用场景对于提升代码的安全性和性能至关重要。本文将深入探讨 transient 关键字的作用…

App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)

一、App 渠道来源追踪概述 渠道来源统计/追踪,其原理都可以称之为归因,归因是用于判断用户在什么原因、什么时间、什么场景下载了 App,以及打通他们在激活 App 后进行的一系列操作(比如注册、付费、加购等)。 渠道来…

参数跟丢了之JS生成器和包装器

如需转载请注明出处.欢迎小伙伴一起讨论技术. 逆向网址:aHR0cHM6Ly91bmlvbi5qZC5jb20vcHJvTWFuYWdlci9pbmRleD9wYWdlTm89MQ 跟踪接口:aHR0cHM6Ly9hcGkubS5qZC5jb20vYXBp 跟踪参数:h5st 本文目标:记录学习下自定义的生成器和包装器,不做具体的参数加密逻辑分析 直接启动器进…

Redis集群——针对实习面试

目录 Redis集群Redis集群解决了什么问题?Redis集群是如何分片的?什么是Sentinel?Redis如何使用哨兵(Sentinel)系统?集群如何进行故障转移?Redis集群中的主从复制模型是怎样的?Redis集…

【种完麦子,我就往南走,去西双版纳,过个冬天!】

麦子奶奶:冰哥,你好。 大冰:你好,咱俩不定谁大呢。 麦子奶奶:嗯,我大,我60多了,你各方面都是哥。 大冰:阿姨好 麦子奶奶:我想出去看看祖国的大好河山&…

长亭那个检测能力超强的 WAF,出免费版啦

告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …

Elasticsearch+kibana+filebeat的安装及使用

版本7.6.0 自己去官网下载或者私信找我要,jdk是8版本 1.ES安装 网上有好多安装教程可以自己去搜索 这个是我的es文件路径: { “name” : “node-1”, “cluster_name” : “elasticsearch”, “cluster_uuid” : “NIepktULRfepkje3JHw8NA”, “ve…

NVR小程序接入平台/设备EasyNVR多品牌NVR管理工具/设备汇聚公共资源场景方案全析

随着信息技术的飞速发展,视频监控已经成为现代社会安全管理和业务运营不可或缺的一部分。特别是在公共资源管理方面,视频监控的应用日益广泛,涵盖了智慧城市、智能交通、大型企业以及校园安防等多个领域。NVR小程序接入平台EasyNVR作为一款功…

ThingsBoard规则链节点:RPC Call Reply节点详解

引言 1. RPC Call Reply 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备控制 3.2 状态查询 3.3 命令执行 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理…

【论文复现】基于图卷积网络的轻量化推荐模型

本文所涉及所有资源均在这里可获取。 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐、摄影的一位博主。 📗本文收录于论文复现系列,大家有兴趣的可以看一看…

sql数据库-DQL-基本查询

目录 举例表emp 查询多个字段 查询整张表所有数据 给字段名起别名(更方便阅读) 去除重复的数据 举例表emp 查询多个字段 SELECT 字段1,字段2,字段3...FROM 表名; 举例查询emp表中的name,workno,age字段返回 查询整张表所有数据 …

OpenCV通过指针裁剪图像

OpenCV 中mat 格式的像素数值都是连续排列的。为了深入了解cuda 编程。我们来写一个简单的小程序测试一下。 1 不裁剪 cv::Mat crop_image(int(height), int(width), CV_8UC3, image.data);2 只保留图像1/3 cv::Mat crop_image(int(height/3), int(width), CV_8UC3, image.da…

Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注,正在改变着组织进行数字创作的方式。 近期,Perforce发布了《2024游戏技术现状报告》,通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

软件测试面试题及答案

以下是软件测试相关的面试题及答案! 1、测试分为哪几个阶段? 一般来说分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试 2、软件测试的流程是什么? 需求调查:全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时…

Python实例:爱心代码

前言 在编程的奇妙世界里,代码不仅仅是冰冷的指令集合,它还可以成为表达情感、传递温暖的独特方式。今天,我们将一同探索用 Python 语言绘制爱心的神奇之旅。 爱心,这个象征着爱与温暖的符号,一直以来都在人类的情感世界中占据着特殊的地位。而通过 Python 的强大功能,…

TypeError: can‘t multiply sequence by non-int of type ‘float‘

通过python程序编写excel表格中的数据,在计算数值时出现数值类型错误: TypeError: cant multiply sequence by non-int of type float 问题分析: 读取的Excel文件中的单元格数据,读取的数值有可能不是数值类型,而是含…

行业人才缺口达百万,无人机“飞手”之渴如何解?0基础无人机学习技术详解

针对无人机“飞手”行业人才缺口达百万的问题,以下是对如何缓解这一缺口以及0基础学习无人机技术的详细解析: 一、缓解无人机“飞手”人才缺口的方法 1. 产教融合: 通过校企合作、产教融合等方式,培养具备实战能力的无人机“飞手…

D60【python 接口自动化学习】- python基础之数据库

day60 数据库定义 学习日期:20241106 学习目标:MySQL数据库-- 128:数据库定义 学习笔记: 无处不在的数据库 数据库如何存储数据 数据库管理系统(数据库软件) 数据库和SQL的关系 总结 数据库就是指数据…