首页 > 其他分享 >225. 用队列实现栈

225. 用队列实现栈

时间:2022-11-15 16:11:28浏览次数:74  
标签:queue1 队列 top pop 实现 push MyStack 225

225. 用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppopempty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false

注意:

  • 你只能使用队列的基本操作 —— 也就是 push to backpeek/pop from frontsize 和 is empty 这些操作。
  • 你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

示例:

输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]
解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

 

提示:

  • 1 <= x <= 9
  • 最多调用100pushpoptopempty
  • 每次调用 poptop 都保证栈不为空
class MyStack {
    Queue<Integer> queue1; // 和栈中保持一样元素的队列
    Queue<Integer> queue2; // 辅助队列

    public MyStack() {
        queue1 = new LinkedList<Integer>();
        queue2 = new LinkedList<Integer>();
    }
    
    public void push(int x) {
        // 将x加入到队列中,若队列满,则返回false
        queue2.offer(x); 
        while (!queue1.isEmpty()) {
            queue2.offer(queue1.poll());
        }
        Queue<Integer> queueTemp;
        queueTemp = queue1;
        queue1 = queue2;
        queue2 = queueTemp; 
    }
    
    public int pop() {
        // 从队列中删除第一个元素,若队列为空,返回null
        return queue1.poll();
    }
    
    public int top() {
        // 查询队列的头部元素,若队列为空,返回null
        return queue1.peek();
    }
    
    public boolean empty() {
        return queue1.isEmpty();
    }
}

/**
 * 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();
 */

 

标签:queue1,队列,top,pop,实现,push,MyStack,225
From: https://www.cnblogs.com/fulaien/p/16892735.html

相关文章

  • AI 智能搜索 开源hanlp实现
     AI智能搜索通过网络资源可知有很多种开源方式实现智能搜索,其中hanlp在GitHub中响应居高参考链接:https://www.hanlp.com/Java版:https://github.com/hankcs/HanLPPyth......
  • uniapp 实现小程序中自定义tabBar
    uniapp实现小程序中自定义tabBar的方法第一种方式:page.json中配置"tabBar":{"color":"#7A7E83","selectedColor":"#007AFF","borderStyle":"black",......
  • MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇
    背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不......
  • unity 通过场景名称实现动态加载背景BGM音乐
    在场景中创建一个空物体对象,然后将代码挂载到空物体需要注意的是,场景中需要有以下组件一般在主摄像头里 添加到代码挂载的空物体上将场景中类的公开变量s......
  • java 使用注解+Aop+redis实现防止重复提交
    防止重复提交的方式有很多可以用数据库的唯一索引,保证数据完整性在业务层用select....forupdate,依然是使用数据库的事务来做的使用注解+拦截器HandlerInt......
  • nodejs实现jwt
    jwt是jsonwebtoken的简称,本文介绍它的原理,最后后端用nodejs自己实现如何为客户端生成令牌token和校验token1.为什么需要会话管理我们用nodejs为前端或者其他服务提供......
  • 通过 BFC 实现页面布局
        实现效果如图<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><title>Title</title><style>......
  • 部署apache2并实现ssl自动跳转
    部署apache2并实现ssl自动跳转1.YUM安装我这里为了快速部署直接使用YUM安装[root@ip-172-31-5-103~]#yuminstallhttpd-y2.路径httpd解释/etc/http......
  • android实现json的解析
    新建一个Person类/***CreatedbyMr.Chan*Time2022-11-15*Bloghttps://www.cnblogs.com/Frank-dev-blog/*/publicclassPerson{privateStringid......
  • 使用 Spring Cloud LoadBalancer 实现客户端负载均衡
    使用SpringCloudLoadBalancer实现客户端负载均衡作者:Grey原文地址:博客园:使用SpringCloudLoadBalancer实现客户端负载均衡CSDN:使用SpringCloudLoadBalancer......