【算法刷题】栈与队列题型及方法归纳

news2025/1/22 15:45:31

栈与队列的特点

在这里插入图片描述

1、栈:FIFO

栈是仅能对其一端进行操作的结构,实现后进先出的效果。在C++中采用容器适配器的方式实现栈。(容器适配器实际上就是对某一类型的对象进行泛化,定义了这一类泛化对象的可进行操作的逻辑)
什么是适配器,C++ STL容器适配器详解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
stack的容器有三种有 vectordequelist,默认使用的是deque容器。
在这里插入图片描述

2、队列:LIFO

队列是能对两端进行操作的结构,实现先进先出的效果。和 stack 栈容器适配器不同,queue 容器适配器有 2 个开口,其中一个开口专门用来输入数据,另一个专门用来输出数据,如图 1 所示。
在这里插入图片描述
这种存储结构最大的特点是,最先进入 queue 的元素,也可以最先从 queue 中出来,即用此容器适配器存储数据具有“先进先出(简称 “FIFO” )”的特点,因此 queue 又称为队列适配器。
C++ STL queue容器适配器详解

在这里插入图片描述
queue的容器有三种有 vectordequelist,默认使用的是deque容器。
在这里插入图片描述

参考文章:栈与队列基础

栈相关题型

栈适用于对相邻元素进行某种判定和操作

题目:

  1. 对顶栈模拟队列
    81、【栈与队列】leetcode ——232. 用栈实现队列(C++版本)

  2. 进栈匹配结果,可简化代码
    83、【栈与队列】leetcode ——20. 有效的括号(C++版本)

  3. 用栈适于对相邻元素进行操作的特点,对相邻元素进行判定,不重复元素入栈,重复元素弹出
    84、【栈与队列】leetcode ——1047. 删除字符串中的所有相邻重复项:栈+双指针解法(C++版本)

  4. 后缀表达式进入栈的过程,相当于对中缀形式的树进行后序遍历
    85、【栈与队列】leetcode ——150. 逆波兰表达式求值(C++版本)

队列相关题型

(1)单调队列:维护一个单调不增或单调不减的队列
(2)优先队列:按照大根堆或小根堆的排列方式,维护一个单调不减或单调不增的队列。(注意创建方式和排序对比函数)

  1. 队列循环进出模拟栈
    82、【栈与队列】leetcode ——225. 用队列实现栈(C++版本)

  2. 使用单调队列保证队首元素为最大值,每次移动滑动窗口也把移除元素从队列中弹出。
    √ 86、【栈与队列】leetcode ——39. 滑动窗口最大值:单调队列+滑动窗口(C++版本)

  3. 构建一个优先队列,用小根堆来维护里面k个元素,当有更大元素加入时,将最小元素弹出。
    √ 87、【栈与队列】leetcode ——347. 前 K 个高频元素:优先队列(小根堆)+Hash表(C++版本)

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

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

相关文章

上半年要写的博客文章22

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

极端尺度物体的显著性分割方法(SOD 新 SOTA)

Paper Link:http://cvteam.buaa.edu.cn/papers.htmlBackground:显著性物体分割在常规图像场景取得突破进展,在极端尺度物体场景仍面临挑战。图像前景物体分割是深度学习、计算机视觉等领域的研究热点,在机器视觉、智能交通、智慧医…

Mac 电脑磁盘空间释放记录

起因 点开钉钉页面就卡住,看了一下,光一个钉钉占到4G左右的内存,给钉钉发了工单,没人理我。又随手看了一下系统磁盘空间使用情况,发现快满了!😓 应用清单 我是一个应用的超轻度用户&#xff…

NFT市场聚合器:他们有没有得到广泛使用?他们对于冷门的NFT交易市场有什么影响?

聚合器是什么?NFT市场聚合器是一种交易工具平台,允许用户在一个页面同时间从多个不同的市场浏览和发现NFT。 这些聚合器将市场上的NFT挂单整合在一起,使用户更容易找到并购买NFT,并节省了用户在多个不同NFT市场之间比较来回比较NF…

rabbitMQ简介

rabbitMQ简介 目前应用最广泛的一个基于AMQP规范的开源的消息中间件RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现 rabbitMQ的重要概念 Message:消息,消息是没有名称的,消息由消息头和消息体组成&#xf…

腾讯安全联合Gartner发布SOC+白皮书,助力政企构筑实战化安全运营体系

随着数字化浪潮的蓬勃兴起,各类政企机构上云步伐加快。与此同时,如高危漏洞、勒索病毒、挖矿木马、APT攻击等威胁层出不穷,安全形势日益严峻。许多政企机构虽部署了较为完备的基础安全产品,但防御体系仍以异构设备堆叠式为主&…

STM32+ESP8266+机智云+DHT11数据上传

机智云 文章目录机智云前言一、工程的修改二、数据的上传1.标识符2.数据处理3.数据上传三、app控制前言 今天搞了一下机智云,就想把温湿度发到app上去,然后能够控制灯的开关。之前从来没有用过这个玩意,用阿里云和点灯科技多一点&#xff0c…

恭喜 OpenSergo 获得中国开源云联盟 2022 “优秀开源项目”

作者:OpenSergo 为了营造良好的开源氛围,为我国开源产业发展注入更多活力,中国开源云联盟(China Open Source Cloud League,简称“COSCL”) 组织开展了 2022 年度评选活动。并在今天的 2022 木兰峰会中公布了评选结果。 2022 木兰…

共享模型之管程(六)

1.park&unpark 1.1.概述 1>.他们是LockSupport类中的方法 // 暂停当前线程 LockSupport.park(); // 恢复某个线程的运行 LockSupport.unpark(暂停线程对象)注意:先park再unpark! 1.2.案例 Slf4j public class TestPark {public static void main(String[] args) th…

持续数据保护(CDP)适合档案数据备份吗?

几个月前笔者写过两篇针对档案长期保存库备份(或者说是档案数字资源长期保存策略)的文章,《电子档案备份相对于数据备份的特别之处》、《备份策略从“3-2-1”到“4-3-2-1”》,但是很多读者依然觉得不解渴,因为目前绝大…

Activity和Fragment的生命周期总结以及保存实例状态机制

读完将收获以下内容 一. Activity的生命周期详解 Activity配置和状态改变时生命周期 Activity状态和配置改变时的解决方案 二.Fragment的生命周期详解 Fragment配置和状态改变时生命周期 Fragmen状态和配置改变时的解决方案 三.Activity和Fragment的生命周期调用顺序 一. Acti…

笔记--Qt Pro语法总结

QT pro文件: 任何一个 Qt 项目都至少包含一个 pro 文件,此文件负责存储与当前项目有关的配置信息,比如: 项目中用到了哪些模块? 项目中包含哪些源文件,哪些头文件,它们的存储路径是什么&…

德育知识元素挖掘系统设计 软件工程 spring boot + Vue.js + python机器学习

第一章 绪论 摘要 当今社会发展迅速,机器学习相关技术快速在各行各业普及,制作数据挖掘系统的需求日益增长。同时,随着社会发展不断推进,对学生进行德育教育的规模越做越大,成为了教育行业发展的一大趋势。对于较大规模…

glibc 2.31 pwn——house of pig原题分析与示例程序

house of pig这种利用方式来源于XCTF 2021 final中的同名题,其原题使用的是libc 2.31版本,本文就根据这道题学习一下这种漏洞利用方式。 参考资料 这是一道C pwn,但漏洞本身与C不同于C的特性关系不大。 一共提供了5个选项: 增&…

idea无法安装插件

不能安装插件,首先需要确定是问题,最常见的是无法下载和安装不上, 1.无法下载解决版本 无法下载很多时候就是延迟太高导致的,我们先打开插件官网看一下 Python - IntelliJ IDEs Plugin | Marketplace 如果网站无法打开&#xf…

【测试】用例篇

努力经营当下,直至未来明朗! 文章目录一、设计测试用例的万能公式二、设计测试用例的具体方法1. 等价类2. 边界值3. 因果图(判定表)4. 场景设计法5. 正交法6. 错误猜测法:sparkles: 小结普通小孩也要热爱生活! 一、设…

JS数据类型判断的九种方式

JS 的数据类型检测是一道经典的八股文面试题。相信大家都能条件反射的回答出 4 种方法:typeof、constructor、instanceof 和 Object.prototype.toString,并且对它们各自的优缺点也是张口就来。 本文对这些方法做了简单归纳,同时又补充了其他…

Leetcode:112. 路径总和、113. 路径总和 II(C++)

目录 112. 路径总和: 问题描述: 实现代码与解析: 递归: 原理思路: 迭代: 原理思路: 113. 路径总和 II: 问题描述: 实现代码与解析: 迭代&#xff…

分享66个NET源码,总有一款适合您

NET源码 分享66个NET源码,总有一款适合您 NET源码下载链接:https://pan.baidu.com/s/1-H0UV3yly3p1PXbeLAvMtA?pwdk06f 提取码:k06f page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "http…

go defer return panic 执行顺序

根据代码实例运行结果来总结说明:定义一个函数,有多个defer (用于判断多个defer执行顺序),有panic和 return (判断与defer对比执行顺序)一、函数中有panicpackage mainimport "fmt"fu…