Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【LeetCode】225. 用队列实现栈

【LeetCode】225. 用队列实现栈

作者头像
韩旭051
发布于 2020-06-22 12:08:24
发布于 2020-06-22 12:08:24
51300
代码可运行
举报
文章被收录于专栏:刷题笔记刷题笔记
运行总次数:0
代码可运行

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

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

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-stack-using-queues 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

基础题

队列实现栈的出栈 是全部出队 最后一个出队就是 pop top 区别是入不入队

检验空否 用list 的api peek方法

public boolean empty() { return list.peek() == null ? true : false; }

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyStack {
    Queue<Integer> list;

    /** Initialize your data structure here. */
    public MyStack() {
        list = new LinkedList<>();
    }
    
    /** Push element x onto stack. */
    public void push(int x) {
        list.add(x);
    }
    
    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        for (int i = 0; i < list.size() - 1; i++) {
            list.add(list.poll());
        }
        return list.poll();
    }
    
    /** Get the top element. */
    public int top() {
        for (int i = 0; i < list.size() - 1; i++) {
            list.add(list.poll());
        }
        int res = list.poll();
        list.add(res);
        return res;
    }
    
    /** Returns whether the stack is empty. */
    public boolean empty() {
        return list.peek() == null ? true : false;
    }
}

/**
 * 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();
 */
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 225. 用队列实现栈
push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意:
Michael阿明
2021/02/20
2550
LeetCode 225. 用队列实现栈
leecode刷题(26)-- 用栈实现队列
所以我们只用一个栈的话是无法实现队列的操作的。不妨换个思路,我们用两个栈来实现队列:
希希里之海
2019/05/14
3460
leecode刷题(26)-- 用栈实现队列
leetcode刷题(41)——232. 用栈实现队列
push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 示例:
老马的编程之旅
2022/06/22
1250
LeetCode 232. 用栈实现队列
https://leetcode-cn.com/problems/implement-queue-using-stacks/
freesan44
2021/09/14
1640
LeetCode 232. 用栈实现队列
leetcode栈之用队列实现栈
这里使用了两个LinkedList,在push的时候,offer到a队列,然后再将b队列的元素offer到a队列,再交换a、b队列;pop、top、empty的时候直接操作b队列。
code4it
2020/10/03
3530
leetcode栈之用队列实现栈
LeetCode | 225.用队列实现栈
上面的题就是 用队列实现栈 题目的截图,同时 LeetCode 给出了一个类的定义,然后要求实现 用队列实现栈 的完整的数据结构。这次我没有使用 C 语言,而是使用了 C++ 语言,整个类的定义如下:
码农UP2U
2020/08/26
2890
LeetCode | 225.用队列实现栈
LeetCode 225题用队列实现栈(Implement Stack using Queues
https://leetcode-cn.com/problems/implement-stack-using-queues/
code随笔
2020/04/14
5360
LeetCode 225题用队列实现栈(Implement Stack using Queues
算法刷题-二叉树的锯齿形层序遍历、用栈实现队列 栈设计、买卖股票的最佳时机 IV
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
共饮一杯无
2023/02/13
2390
队列实现栈有妙招
https://leetcode-cn.com/problems/implement-stack-using-queues/
代码随想录
2021/07/16
2090
用队列实现栈
你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。 你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。
_kyle
2020/12/11
4290
栈和队列的相关问题
 队列可能稍微有点复杂,定义队列的时候需要定义三个变量,分别是end,start,size,先说说他们分别的作用,每次用户拿队中的元素,都从start下标位置取,每次进队都从s=end位置进,每次出队或者进队size都要++或--  假设数组长度是3,如果size没有到3,进队时就把元素放到end的位置上,这是end和size之间的约束关系;如果size不等于0,出队时就总出start位置,这是start和size之间的约束关系。end本身还有一个约束关系,end是控制进队的,所以每次进一个元素end就++,如果end==数组长度,那么end就回到开头也就是0位置
mathor
2018/08/17
7080
栈和队列的相关问题
225. Implement Stack using Queues(Stack-Easy)
该文讲述了如何使用队列实现栈,包括push(x)、pop()、top()和empty()等操作。具体实现方式是在类中定义一个队列,在push(x)操作中,将元素x插入到队列尾部,然后依次将队列头部的元素弹出并插入到队列尾部,实现栈的操作。在pop()、top()和empty()操作中,只需要对应地操作队列即可。
Jack_Cui
2018/01/08
4740
232. 用栈实现队列
push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:
lucifer210
2019/09/04
4890
232. 用栈实现队列
用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):
_kyle
2020/12/15
3560
Leetcode|队1出栈+队2中转|225. 用两个队列实现栈
《225. 用两个队列实现栈》 《剑指 Offer 09. 用两个栈实现队列》 1 队1出栈+队2中转 两个队列q1和q2,新入栈的元素先放入q2,然后将q1中元素逐个入队q2,再交换2队列即可 class MyStack { public: queue<int> q1, q2; /** Initialize your data structure here. */ MyStack() { } /** Push element x onto
SL_World
2022/01/10
2260
Leetcode|队1出栈+队2中转|225. 用两个队列实现栈
leetcode刷题(100)——232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):
老马的编程之旅
2022/06/22
1530
leetcode刷题(100)——232. 用栈实现队列
225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 输入: ["MyStack", "push", "push", "top", "pop", "empty"]
编程张无忌
2021/06/29
2410
LeetCode 232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):
SakuraTears
2022/01/13
1670
LeetCode 0225 - Implement Stack using Queues
Implement the following operations of a stack using queues.
Reck Zhang
2021/08/11
2710
LeetCode笔记:225. Implement Stack using Queues
这道题和232. Implement Queue using Stacks很像,跟他是相反的要求。
Cloudox
2021/11/23
1830
相关推荐
LeetCode 225. 用队列实现栈
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验