【LeetCode OJ 232】Implement Queue using Stacks
2024-08-31 00:27:21
题目链接:https://leetcode.com/problems/implement-queue-using-stacks/
题目:Implement the following operations of a queue using stacks.
- push(x) -- Push element x to the back of queue.
- pop() -- Removes the element from in front of queue.
- peek() -- Get the front element.
- empty() -- Return whether the queue is empty.
Notes:
- You must use only standard operations of a stack -- which means only
push
,
to toppeek/pop from top
,size
,
andis empty
operations are valid. - Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
- You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
解题思路:题目要求用栈来实现队列,并实现其入队列、出队列、查看队首元素和推断队列是否为空四个操作。大致的思路是:用两个栈来模拟实现队列,栈s1作为存储空间,栈s2作为暂时缓冲区。
入队时:将元素压入s1
出队时:首先推断s2是否为空,如不为空,则直接弹出栈顶元素,假设为空,则将s1的元素逐个"倒入"s2,把最后一个元素弹出并出队。
演示样例代码例如以下:
/**
* 用两个栈模拟实现队列基本操作
* @author 徐剑
* @date 2016-02-25
*
*/
public class Solution
{
Stack<Integer> s1 = new Stack<>();
Stack<Integer> s2 = new Stack<>();
// Push element x to the back of queue.
public void push(int x)
{
s1.push(x); }
// Removes the element from in front of queue.
public void pop()
{
if (!s2.empty())
{
s2.pop();
} else if (s1.isEmpty())
{
return;
} else
{
while (!s1.isEmpty())
{
int temp = s1.pop();
s2.push(temp);
}
s2.pop();
}
}
// Get the front element.
public int peek()
{
if (!s2.isEmpty())
return s2.pop(); else if (s1.isEmpty())
{
return -1;
} else
{
while (!s1.isEmpty())
{
int temp = s1.pop();
s2.push(temp);
}
return s2.peek();
}
}
// Return whether the queue is empty.
public boolean empty()
{
return s1.isEmpty() && s2.isEmpty();
}
}
最新文章
- java自定义注解类
- CozyRSS开发记录-中断
- Emacs 常用快捷键
- Android IOS WebRTC 音视频开发总结(二五)-- webrtc优秀资源汇总
- iOS设备的越狱方法
- 十七、Java基础---------集合框架之Map
- JavaScript函数绑定
- iOS 模拟器键盘弹出以及中文输入
- 初识Groovy
- vim使用指北 ---- Advanced Editing
- Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(一)
- wkhtmltopdf 将网页生成pdf文件
- 黑马程序员_Java基础组成
- github上前100的ios项目
- 简单的字符串比较题 POJ 1936
- 使用postfix在debian上配置邮件服务器
- js实现导航菜单栏随着屏幕的滚动进行滚动的效果
- windows驱动程序wdf--KMDF大致框架
- spring-oauth-server实践:使用授权方式四:client_credentials 模式的客户端和服务端交互
- 一张图解释IaaS,PaaS,SaaS