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

【leetcode】栈与队列总结

本文内容来自于代码随想录

用栈实现队列

两个栈实现队列。思路:两个栈分别表示入栈和出栈。

  1. 入队:直接入栈
  2. 出队:
    a. 出栈为空,先把入栈中的元素全部放到出栈中(相当于反过来,这样在出栈的时候先进的元素就变成先出了),然后弹出栈顶
    (2)出栈不为空,那么栈顶就是要出队的元素,直接弹出栈顶

说明:当出栈入栈都有元素的时候,出栈中的元素一定是先入队的,要弹栈优先弹出栈中的元素。出栈空了,再把入栈的元素放到出栈中,再弹栈。

/**
两个栈分别表示入栈和出栈
1. 入队:直接入栈
2. 出队:
(1)出栈为空,先把入栈中的元素全部放到出栈中(相当于反过来,这样在出栈的时候先进的元素就变成先出了),然后弹出栈顶
(2)出栈不为空,那么栈顶就是要出队的元素,直接弹出栈顶
说明:当出栈入栈都有元素的时候,出栈中的元素一定是先入队的,要弹栈优先弹出栈中的元素。出栈空了,再把入栈的元素放到出栈中,再弹栈*/class MyQueue {Stack<Integer> in;Stack<Integer> out;public MyQueue() {in = new Stack<>();out = new Stack<>();}public void push(int x) {in.push(x);}public int pop() {if (out.empty()) {inToOut();}return out.pop();}public int peek() {if (out.empty()) {inToOut();}return out.peek();}public boolean empty() {return in.empty() && out.empty();}public void inToOut() {// 把入栈中的元素全部放到出栈中while (!in.empty()) {int x = in.pop();out.push(x);}}
}/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj = new MyQueue();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.peek();* boolean param_4 = obj.empty();*/

队列

用队列实现栈

两个队列实现栈。用栈模拟队列相对就容易一点,用两个队列。区别在于:另外一个队列只是用来备份数据。在弹栈的时候

  1. 先将 q1 中的数据出队到只剩一个,保存在 q2 中
  2. 将 q1 中最后一个数据出队。最后一个数据就是栈顶
  3. 将 q2 中的数据再出队,保存到 q1 中
class MyStack {Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1 = new LinkedList<>();q2 = new LinkedList<>();}public void push(int x) {q1.offer(x);}public int pop() {oneToTwo();int x = q1.poll();TwoToOne();return x;}public int top() {oneToTwo();int x = q1.poll();q2.offer(x);TwoToOne();return x;}public boolean empty() {return q1.isEmpty();}public void oneToTwo() {while (q1.size() > 1) {int x = q1.poll();q2.offer(x);}}public void TwoToOne() {while (!q2.isEmpty()) {int x = q2.poll();q1.offer(x);}}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/

经典题型

  • 有效的括号
  • 删除字符串中的所有相邻重复项
  • 逆波兰表达式求值
  • 前 K 个高频元素

相关文章:

【leetcode】栈与队列总结

本文内容来自于代码随想录 栈 用栈实现队列 两个栈实现队列。思路&#xff1a;两个栈分别表示入栈和出栈。 入队&#xff1a;直接入栈出队&#xff1a; a. 出栈为空&#xff0c;先把入栈中的元素全部放到出栈中&#xff08;相当于反过来&#xff0c;这样在出栈的时候先进的元…...

[EFI]HP Spectre 13 v102nl电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 HP Spectre 13 v102nl 处理器Intel Core i7-7500U (7th gen - Kaby Lake)已驱动内存8 GB LPDDR3-1866 SDRAM已驱动硬盘512 GB Toshiba NVMe™ M.2 SSD已驱动显卡Intel HD Graphics 620已驱动声卡Conexant CX8200 (0x2008)已驱动网卡I1211 Gigabit Etherne…...

【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec

【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的&#xff1f;2.词向量是什么样子&#xff1f;3.词向量对应的热力图&#xff1a;4.词向量模型的输入与输出![在这里插入图片描述](https://img-blog.csdni…...

【Kotlin 】协程

Kotlin协程 背景定义实践GlobalScope.launchrunBlocking业务实践 背景 在项目实践过程中&#xff0c;笔者发现很多异步或者耗时的操作&#xff0c;都使用了Kotlin中的协程&#xff0c;所以特地研究了一番。 定义 关于协程&#xff08;Coroutine&#xff09;&#xff0c;其实…...

用Xshell连接虚拟机的Ubuntu20.04系统记录。虚拟机Ubuntu无法上网。本机能ping通虚拟机,反之不能。互ping不通

先别急着操作&#xff0c;看完再试。 如果是&#xff1a;本机能ping通虚拟机&#xff0c;反之不能。慢慢看到第8条。 如果是&#xff1a;虚拟机不能上网&#xff08;互ping不通&#xff09;&#xff0c;往下一直看。 系统是刚装的&#xff0c;安装步骤&#xff1a;VMware虚拟机…...

人机对话--关于意识机器

人机对话–关于意识机器 这段内容是我和《通义千问》的对话。这本身展示的是人工智能的效果&#xff0c;同时这里面的内容也有人工智能相关&#xff0c;与各位分享。 我&#xff1a;阿尼尔赛斯 《意识机器》这本书写的是什么&#xff1f; 通义千问&#xff1a; 阿尼尔赛斯教…...

八股文打卡day16——计算机网络(16)

面试题&#xff1a;TCP连接是如何确保可靠性的&#xff1f; 我的回答&#xff1a; 1.数据分块控制。应用数据被分成被认为最适合传输的数据块大小&#xff0c;再发送到传输层&#xff0c;数据块被称为数据报文段或数据段。 2.序列号和确认应答。TCP为每一个数据包分配了一个序…...

Java Object浅克隆深克隆

对象克隆 把A对象的属性值完全拷贝给B对象&#xff0c;也叫对象拷贝&#xff0c;对象复制。 实现Cloneable接口&#xff0c;表示当前类的对象就可以被克隆&#xff0c;反之&#xff0c;表示当前类的对象就不能克隆。 如果一个接口里面没有抽象方法&#xff0c;表示当前的接口…...

概率的 50 个具有挑战性的问题 [8/50]:完美的桥牌

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff09;一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇…...

自动驾驶学习笔记(二十四)——车辆控制开发

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 控制算法 控制标定 控制协议…...

【起草】【第十二章】定制ChatGPT数字亲人

身为普普通通的我们&#xff0c;不知道亲人们在哪一天就要离开这个世界 &#xff1f; 作为普普通通的程序员&#xff0c;我们可以为我们的亲人做点什么 &#xff1f; 让他们以数字资产形式留在人世间 ? 对话&#xff5c;6岁女孩病逝捐器官&#xff0c;妈妈&#xff1a;她去…...

MySQL数据库索引

索引的定义 索引是一个排序的列表&#xff0c;包含索引字段的值和其对应的行记录的数据所在的物理地址 索引的作用 加快表的查询速度&#xff0c;还可以对字段排序 索引的副作用 会额外占用磁盘空间&#xff1b;更新包含索引的表会花费更多的时间&#xff0c;效率会更慢 …...

【LLM 】7个基本的NLP模型,为ML应用程序赋能

在上一篇文章中&#xff0c;我们已经解释了什么是NLP及其在现实世界中的应用。在这篇文章中&#xff0c;我们将继续介绍NLP应用程序中使用的一些主要深度学习模型。 BERT 来自变压器的双向编码器表示&#xff08;BERT&#xff09;由Jacob Devlin在2018年的论文《BERT:用于语言…...

数字人私人定制

数字人是什么&#xff1f; 在回答这个问题之前&#xff0c;我们先回答另一个问题&#xff0c;人如何与人工智能交流&#xff1f;目前可以通过文字、语音、电脑屏幕、手机屏幕、平板、虚拟现实设备等和人工智能交流&#xff0c;为了得到更好的交流体验&#xff0c;人工智能必然…...

CollectionUtils

使用 CollectionUtils 类的常用方法 在Java开发中&#xff0c;我们经常需要对集合进行各种操作&#xff0c;而Apache Commons Collections库提供了一个方便的工具类 CollectionUtils&#xff0c;其中包含了许多实用的方法。在这篇博客中&#xff0c;我们将深入了解一些常用的方…...

很想写一个框架,比如,spring

很想写一个框架&#xff0c;比如&#xff0c;spring。 原理很清楚&#xff0c;源码也很熟悉。 可惜力不从心&#xff0c;是不是可以找几个小弟一起做。...

Java集合/泛型篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、说说LinkHashSet( HashSet+LinkedHashMap)二、HashMap(数组+链表+红黑树)三、说说ConcurrentHashMap前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…...

ACES 增强版不丹水稻作物地图(2016-2022 年)

ACES 增强版不丹水稻作物地图&#xff08;2016-2022 年&#xff09; 用于改善粮食安全决策的 2016-2022 年年度作物类型稻米地图仍然是不丹的一项挑战。这些地图是与不丹农业部和 SERVIR 合作开发的。通过专注于发展不丹的科学、技术、工程和数学 (STEM)&#xff0c;我们共同开…...

【Spark精讲】一文讲透Spark宽窄依赖的区别

宽依赖窄依赖的区别 窄依赖&#xff1a;RDD 之间分区是一一对应的宽依赖&#xff1a;发生shuffle&#xff0c;多对多的关系 宽依赖是子RDD的一个分区依赖了父RDD的多个分区父RDD的一个分区的数据&#xff0c;分别流入到子RDD的不同分区特例&#xff1a;cartesian算子对应的Car…...

nacos2.3.0配置中心问题处理

问题&#xff1a;Error to process server push response: {"headers":{},"abilityTable":{"supportPersistentInstanceByGrpc":true},"module":"internal"} 处理办法&#xff1a; 将pom.xml中 <!-- nacos服务注册/发…...

Apollo自动驾驶系统:实现城市可持续交通的迈向

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言引言&#xff1a;1. 什么是微服务架构&#xff1f;2. 微服务架构的组成要素3. 微服务架构的挑战和解决方案4. 微服务架构的可扩展性和弹性 第二部分&#x…...

【WPF.NET开发】附加事件

本文内容 先决条件附加事件语法WPF 如何实现附加事件附加事件方案处理附加事件定义自定义附加事件引发 WPF 附加事件 Extensible Application Markup Language (XAML) 定义了一种语言组件和称为附加事件的事件类型。 附加事件可用于在非元素类中定义新的 路由事件&#xff0c…...

java浅拷贝BeanUtils.copyProperties引发的RPC异常 | 京东物流技术团队

背景 近期参与了一个攻坚项目&#xff0c;前期因为其他流程原因&#xff0c;测试时间已经耽搁了好几天了&#xff0c;本以为已经解决了卡点&#xff0c;后续流程应该顺顺利利的&#xff0c;没想到 人在地铁上&#xff0c;bug从咚咚来~ 没有任何修改的服务接口&#xff0c;抛出…...

【pynput】鼠标行为追踪并模拟

文章目录 前言基本思路安装依赖包实时鼠标捕获捕获鼠标位置捕获鼠标事件记录点击内容效果图 实时按键捕获控制按键操作捕获按键事件组合键记录区间设置 用户操作记录与回溯基本思路完整代码效果图 利用本文内容从事的任何犯法行为和开发与本人无关&#xff0c;请理性利用技术服…...

docker小白第十天

redis集群主从容错切换案例 3主3从的redis集群&#xff0c;某个主机宕机了&#xff0c;需要对应的从机补位。 docker exec -it redis-node-1 /bin/bash # 进入容器1的命令行 redis-cli -p 6381 # 进入节点1的命令行 cluster nodes # 查看集群信息可以看到1号和6号对应是主从关…...

Apache SSI 远程命令执行漏洞

一、环境搭建 二、访问upload.php 三、写shell <!--#exec cmd"id" --> 四、访问 如图所示&#xff0c;即getshell成功&#xff01;​...

阿里云30个公共云地域、89个可用区、5个金融云和政务云地域

阿里云基础设施目前已面向全球四大洲&#xff0c;公共云地域开服运营30个公共云地域、89个可用区&#xff0c;此外还拥有5个金融云、政务云地域&#xff0c;并且致力于持续的新地域规划和建设&#xff0c;从而更好的满足用户多样化的业务和场景需求。伴随着基础设施的加速投入和…...

Linux驱动开发之杂项设备注册和Linux2.6设备注册

目录 一、杂项设备注册 杂项设备注册简介 杂项设备注册特点: 杂项设备注册相关API misc_register() misc_deregister() 杂项设备注册相关例程 例程简介 源码分享 二、Linux 2.6设备注册 Linux2.6设备注册简介 Linux 2.6设备注册特点 Linux2.6设备注册流程 ​Linu…...

javafx写一个文档编辑器

文本编辑器是一种用于编辑纯文本文件的工具。它具有基本的文本编辑功能,如插入、删除、复制、粘贴等。文本编辑器通常不具备格式化文本、排版和图形编辑等高级功能,专注于纯文本的编辑。常见的文本编辑器包括记事本(Notepad)、Sublime Text、Visual Studio Code、Atom、Emacs…...

PHP与Angular详细对比 帮助你选择合适的项目技术

开发可有效扩展并提供诺克斯堡级安全性的Web应用程序和网站是每个开发人员的梦想。而使用这样的产品是每个用户的愿望。因此&#xff0c;为您的项目选择最合适和可靠的技术非常关键。 虽然PHP和Angular是完全不同的技术——PHP与JavaScript是一个更恰当的比较——但它们都广泛…...

上海专业网站建设报价/网址收录

今天是机器学习的第16篇文章&#xff0c;我们来继续上周KD-Tree的话题。如果有没有看过上篇文章或者是最新关注的小伙伴&#xff0c;可以点击一下下方的传送门&#xff1a;机器学习——详解KD-Tree来龙去脉旋转不可行分析上周我们实现了KD-Tree建树和查询的核心功能&#xff0c…...

网店设计流程/win7系统优化软件

1、数组式队列 特点&#xff1a;先进先出 利用数组实现的对列 #include<stdio.h>#define MAXSIZE 10 //队列大小int buf[MAXSIZE]; int tail0; int front0;//队列是否为空 bool IsEmpty() {if(tailfront)//当头尾相等时表示队列为空return true;elsereturn false; } /…...

网站备案贵州电话/网站制作郑州

为什么80%的码农都做不了架构师&#xff1f;>>> 切记 导入头文件哦 .h #import "sys/utsname.h"(NSString *)getCurrentDeviceModel;//设备号 获取 (void)getDevicesInfo;//app相关信息 .m (NSString *)getCurrentDeviceModel {struct utsname systemI…...

网络营销策划方案目的/seo搜索引擎优化技术教程

系统已上线&#xff0c;给客户修改bug的时候&#xff0c;使用delete语句删表数据&#xff0c;没想到库没切换成测试库。误删了正式库的数据&#xff0c;而且一次备份都没有做过&#xff0c;玩大了 不扯了&#xff0c;进入主题 网上很多方法&#xff0c;都是针对至少有一次备份的…...

网上哪个网站做的系统好用吗/百度一下你就知道手机版

一、事务的传播行为 1.介绍 当事务方法被另一个事务方法调用时&#xff0c;必须指定事务应该如何传播。例如&#xff1a;方法可能继续在现有事务中运行&#xff0c;也可能开启一个新事务&#xff0c;并在自己的事务中运行。 2.属性 事务的传播行为可以由传播属性指定。Spri…...

石家庄新闻综合频道在线直播观看/西安关键词优化软件

ios培训------我的c语言笔记&#xff0c;期待与您交流! #include <stdio.h> int main() {//逻辑与 条件1 && 条件2/*运算结果只有当条件A和条件B都成立时&#xff0c;结果才为1&#xff0c;也就是“真”&#xff1b;其余情况的结果都为0&#xff0c;也就是“假”…...