Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用队列实现栈

用队列实现栈

原创
作者头像
_kyle
修改于 2023-09-24 06:40:10
修改于 2023-09-24 06:40:10
44200
代码可运行
举报
文章被收录于专栏:kyle的专栏kyle的专栏
运行总次数:0
代码可运行

题目描述

使用队列实现栈的下列操作:

push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空

注意:

你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。 你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。

解题思路

假装queue是一个队列,将元素入队列后,则这个元素则是一个栈顶元素,但在队列中他是一个最后出队列的元素。所以我们需要将它前面的元素,依次出队列在入队列,这样当前元素即成了队列的首元素(即模拟栈的栈顶元素)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Initialize your data structure here.
 */
var MyStack = function() {
    this.queue = []
};

/**
 * Push element x onto stack. 
 * @param {number} x
 * @return {void}
 */
MyStack.prototype.push = function(x) {
    let size = this.queue.length
    this.queue.push(x)
    for (let i = 0; i < size; i++)
        this.queue.push(this.queue.shift())
};

/**
 * Removes the element on top of the stack and returns that element.
 * @return {number}
 */
MyStack.prototype.pop = function() {
    return this.queue.shift()
};

/**
 * Get the top element.
 * @return {number}
 */
MyStack.prototype.top = function() {
    return this.queue[0]
};

/**
 * Returns whether the stack is empty.
 * @return {boolean}
 */
MyStack.prototype.empty = function() {
    return this.queue.length === 0
};

/**
 * Your MyStack object will be instantiated and called as such:
 * var obj = new MyStack()
 * obj.push(x)
 * var param_2 = obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.empty()
 */

题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-stack-using-queues

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指Offer题解 - Day61
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。
chuckQu
2022/08/19
1790
LeetCode | 225.用队列实现栈
上面的题就是 用队列实现栈 题目的截图,同时 LeetCode 给出了一个类的定义,然后要求实现 用队列实现栈 的完整的数据结构。这次我没有使用 C 语言,而是使用了 C++ 语言,整个类的定义如下:
码农UP2U
2020/08/26
2940
LeetCode | 225.用队列实现栈
【LeetCode】225. 用队列实现栈
push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意:
韩旭051
2020/06/22
5210
LeetCode 225题用队列实现栈(Implement Stack using Queues
https://leetcode-cn.com/problems/implement-stack-using-queues/
code随笔
2020/04/14
5450
LeetCode 225题用队列实现栈(Implement Stack using Queues
leetcode栈之用队列实现栈
这里使用了两个LinkedList,在push的时候,offer到a队列,然后再将b队列的元素offer到a队列,再交换a、b队列;pop、top、empty的时候直接操作b队列。
code4it
2020/10/03
3600
leetcode栈之用队列实现栈
232. 用栈实现队列
push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:
lucifer210
2019/09/04
5000
232. 用栈实现队列
队列实现栈有妙招
https://leetcode-cn.com/problems/implement-stack-using-queues/
代码随想录
2021/07/16
2160
用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):
_kyle
2020/12/15
3650
用javascript分类刷leetcode18.队列(图文视频讲解)1
队列的特点:先进先出(FIFO)队列的时间复杂度:入队和出队O(1),查找O(n)优先队列:priorityQueue,按优先级出队,实现 Heap(Binary,Fibonacci...)js里没有队列,但是可以用数组模拟图片347. 前 K 个高频元素 (medium)给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = 1,1,1,2,2,3, k = 2输出: 1,2示例 2:输入: nums = 1, k
hellocoder2028
2023/01/03
7830
leetcode刷题(99)——225. 用队列实现栈
push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意:
老马的编程之旅
2022/06/22
1930
算法刷题(1):使用队列实现栈
Implement the following operations of a stack using queues.
xujjj
2019/07/05
4330
LeetCode | 232.用栈实现队列
上面的题就是 用栈实现队列 题目的截图,同时 LeetCode 给出了一个类的定义,然后要求实现 用栈实现队列 的完整的数据结构。这次我同样没有使用 C 语言,而是使用了 C++ 语言,整个类的定义如下:
码农UP2U
2020/08/26
3020
LeetCode | 232.用栈实现队列
leetcode刷题(100)——232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):
老马的编程之旅
2022/06/22
1690
leetcode刷题(100)——232. 用栈实现队列
LeetCode 225. 用队列实现栈
push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意:
Michael阿明
2021/02/20
2620
LeetCode 225. 用队列实现栈
栈与队列:用队列实现栈还有点别扭
刚刚做过栈与队列:我用栈来实现队列怎么样?的同学可能依然想着用一个输入队列,一个输出队列,就可以模拟栈的功能,仔细想一下还真不行!
代码随想录
2020/09/21
6240
TypeScript算法题实战——栈与队列篇(栈和队列的实现,括号表达式,逆波兰表达式)
文章链接:https://cloud.tencent.com/developer/article/2473753
中杯可乐多加冰
2024/12/05
1370
算法刷题(1):使用队列实现栈
Implement the following operations of a stack using queues.
xujjj
2019/07/02
5470
算法刷题(1):使用队列实现栈
搞定大厂算法面试之leetcode精讲18.队列
搞定大厂算法面试之leetcode精讲18.队列 视频讲解(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 队列的特点:先进先出(FIFO) 队列的时间复杂度:入队和出队O(1),查找
全栈潇晨
2021/12/03
6810
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》通行全球的程序员经典面试秘籍。剖析典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。
用户8921923
2022/10/24
2790
Leetcode 225. Implement Stack using Queues
版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/84109067
Tyan
2019/05/25
3290
相关推荐
剑指Offer题解 - Day61
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验