225. Implement Stack using Queues
来源:互联网 发布:淘宝产品拍摄相机选择 编辑:程序博客网 时间:2024/05/22 12:13
题目:
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.
- 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).
思路:
用两个队列去模拟一个栈,和之前的用两个栈去模拟一个队列很相似,关键在于pop操作的模拟。
我的思路是保证q1是主要的队列,q2是辅助队列。
每次push时都是插入到q1中,当需要pop时,将q1中除了最后一个元素的所有元素remove并push到q2,然后remove最后一个元素,最后再将q1复制成q2。
代码:
class MyStack { public List<Integer> q1 = new ArrayList<Integer>(); public List<Integer> q2 = new ArrayList<Integer>(); // Push element x onto stack. public void push(int x) { q1.add(x); } // Removes the element on top of the stack. public void pop() { if(q1.size() == 0){return;} if(q1.size() == 1){ q1.remove(0); }else{ while(q1.size() > 1){ q2.add(q1.get(0)); q1.remove(0); } q1.remove(0); q1.addAll(q2); q2.clear(); } } // Get the top element. public int top() { if(q1.size() == 1){ return q1.get(0); }else{ while(q1.size() > 1){ q2.add(q1.get(0)); q1.remove(0); } int value = q1.get(0); q2.add(q1.get(0)); q1.remove(0); q1.addAll(q2); q2.clear(); return value; } } // Return whether the stack is empty. public boolean empty() { return (q1.size()==0 && q2.size()==0); }}
0 0
- 225.Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- 225. Implement Stack using Queues
- [BLE]低功耗蓝牙介绍
- 如何在folat left的时候让子div撑开父div
- 安卓通知的使用系列1:土司(Toast)通知和自定义土司(Toast)通知
- iOS UITableView简介 —— HERO博客
- p6spy2.x配置为slf4j-log4j输出日志同时到控制台和文件
- 225. Implement Stack using Queues
- 禁止UIScrollView垂直方向滚动,只允许水平方向滚动;或只允许垂直方向滚动
- spring ioc 原理小解
- Java的反射机制的作用
- 南阳ACM 题目71:独木舟上的旅行 Java版
- Android控件postDelayed用法,View自带的定时器
- c++自制Redis 数据库(十四)阶段性小结
- 探索工作流(八)--使用总结
- Java中equals()方法和“==”的区别