当前位置: 首页 > news >正文

LeetCode 232.用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:

void push(int x) 将元素 x 推到队列的末尾

int pop() 从队列的开头移除并返回元素

int peek() 返回队列开头的元素

boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

1、你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。

2、你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

示例 1:

输入:

["MyQueue", "push", "push", "peek", "pop", "empty"]

[[], [1], [2], [], [], []]

输出:

[null, null, null, 1, 1, false]

解释:

MyQueue myQueue = new MyQueue();

myQueue.push(1); // queue is: [1]

myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)

myQueue.peek(); // return 1

myQueue.pop(); // return 1, queue is [2]

myQueue.empty(); // return false

提示:

1、1 <= x <= 9

2、最多调用 100 次 push、pop、peek 和 empty

3、假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)

思路:

  1. empty方法:如果两个栈都为空,则队列为空

  1. push方法:均向栈1压栈

  1. pop方法:将栈1的所有元素出栈然后入栈2,栈2pop的元素就是要出的元素

  1. peek方法:pop方法不出栈,peek

代码:

class MyQueue {private Stack<Integer> stack1;private Stack<Integer> stack2;public MyQueue() {stack1=new Stack<>();stack2=new Stack<>();}public void push(int x) {stack1.push(x);}public int pop() {if(stack2.isEmpty()){while(!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.pop();public int peek() {if(stack2.isEmpty()){while(!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.peek();}public boolean empty() {return stack1.empty()&&stack2.empty();}
}
http://www.lryc.cn/news/20046.html

相关文章:

  • go面向对象思想封装继承多态
  • 【网络原理9】HTTP响应篇
  • SpringCloud之Seata(二)
  • 【Redis-入门阶段】基本数据结构
  • BACnet协议详解————MS/TP物理层,数据链路层和网络层
  • Tomcat
  • 创客匠人直播:构建公域到私域的用户增长模型
  • 机试指南
  • Android CTA认证设定首选网络类型
  • Android 动态切换应用图标方案
  • SMART PLC斜坡函数功能块(梯形图代码)
  • 不那么认真的linux复习
  • Redis系列文章总纲
  • 更新丨三大模块升级,助力高效交付商业项目!
  • C++回顾(二)——const和引用
  • MXNet中使用双向循环神经网络BiRNN对文本进行情感分类<改进版>
  • DNS 域名解析
  • Spring MVC 源码- ViewResolver 组件
  • 【Hello Linux】初识冯诺伊曼体系
  • mysql索引,主从多个核心主题去探索问题。
  • 前端一面必会面试题(边面边更)
  • 【Hello Linux】初识操作系统
  • 完美的vue3动态渲染菜单路由全程
  • 2023年CDGA考试模拟题库(301-400)
  • Linux-常见命令
  • 2.25测试对象分类
  • 【Zabbix实战之部署篇】Zabbix客户端的安装部署方法
  • 【CSS】CSS 层叠样式表 ② ( CSS 引入方式 - 内嵌样式 )
  • MySQL事务与索引
  • 【编程入门】应用市场(php版)