代码随想录打卡Day10|232, 225栈和队列(一)

文章探讨了如何使用栈实现队列以及用队列实现栈的方法。在栈实现队列中,采用双栈策略,一个作为输入栈,一个作为输出栈。pop操作需要确保输出栈不为空。而队列实现栈时,由于需要支持快速的top和pop操作,因此在入队或出队时需进行特殊处理,保证元素的顺序符合栈的要求,这会导致某些操作的时间复杂度为O(n)。
摘要由CSDN通过智能技术生成

学习目标:
理论基础
● 232.用栈实现队列
● 225. 用队列实现栈

学习笔记:

232.用栈实现队列

使用栈实现队列的下列操作:
push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek() – 返回队列首部的元素。
empty() – 返回队列是否为空。

方法:用双栈来操作,一个当作输入栈,一个当输出栈;在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。

  1. 用队列实现栈

使用队列实现栈的下列操作:
push(x) – 元素 x 入栈
pop() – 移除栈顶元素
top() – 获取栈顶元素
empty() – 返回栈是否为空

方法:
使用一个队列实现栈:只能实现存和取两个操作其中一个时间复杂度为O(1)另一个为O(n);因为本题有 Pop 和 Top 两个读取操作,所以采取的模式是写入为 O(n),读取为 O(1);所谓实现栈和O(n)就是在入队或出队时循环前n-1个节点,从队首出队后立即再加入队排在队尾,即实现队反序

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值