LeetCode——Implement Stack using Queues
2024-08-29 11:20:46
Description:
Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
Notes:
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis empty
operations are valid. - Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
- You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
用队列来实现一个栈。
思路:用两个队列来模拟栈的功能,当前队列(cur)是用来存放数据的,另一个队列是用来替换当前队列的,这样就能操作队尾元素了。两个队列来回切换,一个用来保存数据,另一个用来操作队尾元素。
PS.Java里不能用泛型数组啊,只好用线性表来代替了。代码看起来又复杂了一些。要不要用C++和Python再来一遍。
class MyStack {
public List<Queue<Integer>> queue;
public int cur;
public MyStack() {
queue = new ArrayList<Queue<Integer>>();
queue.add(new LinkedList<Integer>());
queue.add(new LinkedList<Integer>());
cur = 0;
}
// Push element x onto stack.
public void push(int x) {
queue.get(cur).offer(x);
} // Removes the element on top of the stack.
public void pop() {
while(queue.get(cur).size() > 1) {
queue.get(1-cur).offer(queue.get(cur).poll());
}
queue.get(cur).poll();
cur = 1 - cur;
} // Get the top element.
public int top() {
while(queue.get(cur).size() > 1) {
queue.get(1-cur).offer(queue.get(cur).poll());
}
int t = queue.get(cur).poll();
queue.get(1-cur).offer(t);
cur = 1 - cur;
return t;
} // Return whether the stack is empty.
public boolean empty() {
if(queue.get(cur).isEmpty())
return true;
else
return false;
}
}
最新文章
- Python操作Mysql之基本操作
- Win7下Doxygen配置与使用
- [转载]TFS与Project、Excel同步
- javascript --- 设计模式之Module模式
- Java7并发编程实战(一) 线程的中断
- 修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL
- iOS - Swift PList		数据存储
- 懒加载异常:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- get the runing time of C++ console program.
- 原型链和new
- poj3278(bfs)
- NEU 1440 The minimum square sum (平方剩余和欧拉准则)
- SQL复习五(索引)
- jquery的几个国内CDN加速节点
- C++ stack
- NOIP2017总结
- Eclipse设置所有新创建文件默认格式为UTF-8
- Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015
- 3.建造者模式(Builder)
- I2C和SPI总线对比
热门文章
- java——多线程的实现
- 对于REST中无状态(stateless)的一点认识(转)
- [Django学习]分页
- C# 关于JArray和JObject封装JSON对象
- C# - 简单介绍TaskScheduler
- 关于在Android中添加事件监听器的方法
- 【转】C# Async/Await 异步编程中的最佳做法
- BCM_SDK命令
- 用 #include “filename.h” 格式来引用非标准库的头文件
- 使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象