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

225. 用队列实现栈

时间:2022-12-28 16:56:39浏览次数:68  
标签:队列 pop queue 实现 int push MyStack 225

225. 用队列实现栈

难度简单638收藏分享切换为英文接收动态反馈

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

实现 MyStack 类:

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

注意:

  • 你只能使用队列的基本操作 —— 也就是 push to backpeek/pop from frontsizeis 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 都保证栈不为空

进阶:你能否仅用一个队列来实现栈。

type MyStack struct {
    queue []int

}


func Constructor() MyStack {
    return MyStack{
        queue:make([]int,0),
    }

}


func (this *MyStack) Push(x int)  {
    this.queue=append(this.queue,x)

}


func (this *MyStack) Pop() int {
    size:=len(this.queue)-1
    for size!=0{
        val:=this.queue[0]
        this.queue=this.queue[1:]
        this.queue=append(this.queue,val)
        size--
    }
    val1:=this.queue[0]
    this.queue=this.queue[1:]
    return val1

}


func (this *MyStack) Top() int {

    return this.queue[len(this.queue)-1]

}


func (this *MyStack) Empty() bool {
     return len(this.queue)==0

}


/**
 * Your MyStack object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(x);
 * param_2 := obj.Pop();
 * param_3 := obj.Top();
 * param_4 := obj.Empty();
 */

标签:队列,pop,queue,实现,int,push,MyStack,225
From: https://www.cnblogs.com/suehoo/p/17010493.html

相关文章

  • django 自带auth模块 实现 用户 注册、登录、验证、注销
    Auth模块只要是跟用户相关的登陆、注册、校验、修改密码、注销、验证用户是否登陆 内容详细Auth模块"""其实我们在创建好一个django项目之后直接执行数据库迁移......
  • vant轮播多个,实现一次轮播中展示多个div,四个一屏为例
    实现效果如下:实现思路:1、官方示例是循环列表,如下代码块,从而实现每屏只有一张图片;<van-swipe-itemv-for="(image,index)inimages":key="index"><imgv-lazy="......
  • 数值计算:前向和反向自动微分(Python实现)
    1自动微分我们在《数值分析》课程中已经学过许多经典的数值微分方法。许多经典的数值微分算法非常快,因为它们只需要计算差商。然而,他们的主要缺点在于他们是数值的,这意味......
  • a29_scala Queue 队列
    目录​​scalaoutline​​​​队列的创建入队出队添加元素​​​​队列访问​​scalaoutline​​scalaoutline​​队列的创建入队出队添加元素importscala.collec......
  • 实现app短信验证码功能这样做就很简单!
    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册、登陆、支付等场景,a......
  • Spring Cloud 使用 Resilience4j 实现服务熔断
    CircuitBreaker断路器服务熔断是为了保护我们的服务,比如当某个服务出现问题的时候,控制打向它的流量,让它有时间去恢复,或者限制一段时间只能有固定数量的请求打向这个服务......
  • winform中实现打开摄像头+识别条形码和二维码
    我们去菜鸟驿站拿快递的时候,需要我们把自己的快递拿到扫描台上扫下,表示包裹已出库。今天我们就来实现这个功能,基于winform程序开发快递单的扫描和识别,顺便也识别下二维码。......
  • 基于Seata探寻分布式事务的实现方案
    作者:京东物流技术与数据智能部张硕1背景知识随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇......
  • Java实现操作系统的银行家算法详解
      一、目的  通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法。二......
  • U盘实现一键安装ghost系统并去除grub错误(转自冨仕屾芐)
       特点:不需要光驱,只要有gho文件,就能一键重装系统1.工具“一键GHOST”最新版本V2009.09.09(硬盘/光盘/优盘版)U盘一个2.软件下载地址以及教程,我们只需要U盘版本,现......