[LeetCode]232.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 top, peek/pop from top, size, and is 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).

思路

两个栈模拟队列

代码

/*---------------------------------------
*   日期:2015-08-01
*   作者:SJF0115
*   题目: 232.Implement Queue using Stacks
*   网址:https://leetcode.com/problems/implement-queue-using-stacks/
*   结果:AC
*   来源:LeetCode
*   博客:
-----------------------------------------*/
#include <iostream>
#include <vector>
#include <stack>
using namespace std;

class Queue {
public:
    // Push element x to the back of queue.
    void push(int x) {
        firStack.push(x);
    }

    // Removes the element from in front of queue.
    void pop(void) {
        if(!secStack.empty()){
            secStack.pop();
            return;
        }//if
        if(firStack.empty()){
            return;
        }//if
        while(!firStack.empty()){
            secStack.push(firStack.top());
            firStack.pop();
        }//while
        secStack.pop();
    }

    // Get the front element.
    int peek(void) {
        if(!secStack.empty()){
            return secStack.top();
        }//if
        //no pop or peek operations will be called on an empty queue
        if(firStack.empty()){
            return -1;
        }//if
        while(!firStack.empty()){
            secStack.push(firStack.top());
            firStack.pop();
        }//while
        return secStack.top();
    }

    // Return whether the queue is empty.
    bool empty(void) {
        return firStack.empty() && secStack.empty();
    }
private:
    stack<int> firStack;
    stack<int> secStack;
};

int main(){
    Queue q;
    for(int i = 0;i < 5;++i){
        q.push(i);
    }//for
    while(!q.empty()){
        cout<<q.peek()<<" ";
        q.pop();
    }//while
    q.push(8);
    cout<<q.peek()<<endl;
    q.pop();
    cout<<q.peek()<<endl;
    return 0;
}
时间: 2024-10-26 19:50:20

[LeetCode]232.Implement Queue using Stacks的相关文章

[LeetCode]28.Implement strStr()

[题目] Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack. [题意] 实现strStr()功能. [分析] 暴力算法代码如下.更高效的的算法有 KMP 算法.Boyer-Mooer 算法和Rabin-Karp 算法.面试中暴力算法足够了. 具体参考:KMP字符串模式匹配详解 [代码] /***

LeetCode 28 Implement strStr()(实现strStr()函数)

翻译 实现strStr()函数. 返回针(needle)在草垛/针垛(haystack)上第一次出现的索引, 如果不存在其中则返回-1. 其实也就是说字符串str2在字符串str1中第一次出现的索引而已. 原文 Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 代码 class Solution

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

纸上谈兵: 队列 (queue)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   队列(queue)是一个简单而常见的数据结构.队列也是有序的元素集合.队列最大的特征是First In, First Out (FIFO,先进先出),即先进入队列的元素,先被取出.这一点与栈(stack)形成有趣的对比.队列在生活中很常见,排队买票.排队等车-- 先到的人先得到服务并离开队列,后来的人加入到队列的最后.队列是比较公平的分配有限资源的方式,可以让队列的人以相似的

&lt;font color=&quot;red&quot;&gt;[置顶]&lt;/font&gt;

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸,本博客会持续更新,感谢您的支持,欢迎您的关注与留言.博客有多个专栏,分别是关于 Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 . Android应用开发 ,而最近会添加的文章将主要是算法和Android,不过其它内容也会继续完善. About the Author 独立 Windows App 和

WPF异步载入图片,附带载入中动画

原文:WPF异步载入图片,附带载入中动画 WPF异步载入图片,附带载入中动画 最近,在做一个WPF项目.项目中有一个需求,就是以列表的方式显示出项目图片.这些图片有的存在于互联网上,有的存在于本地磁盘.存在本地磁盘的文件好说,主要是存在于网络的图片.因为存在于网络的图片,在载入时需要耗费时间,如果直接给Image控件绑定URI属性的话,会造成界面卡顿.为了提供更好的体验,要求有类似网页中图片载入中的特效. 经过两天的研究,我翻看了爱壁纸HD For Windows的源代码(你懂得).终于完成了这

&lt;数据结构&gt; 队列[转]

队列(queue)是一个简单而常见的数据结构.队列也是有序的元素集合.队列最大的特征是First In, First Out (FIFO,先进先出),即先进入队列的元素,先被取出.这一点与栈(stack)形成有趣的对比.队列在生活中很常见,排队买票.排队等车-- 先到的人先得到服务并离开队列,后来的人加入到队列的最后.队列是比较公平的分配有限资源的方式,可以让队列的人以相似的等待时间获得服务.   队列支持两个操作,队首的元素离开队列(dequeue),和新元素加入队尾(enqueue). 队列

algorithm-关于leetcode上的Implement Strstr()的一个疑问

问题描述 关于leetcode上的Implement Strstr()的一个疑问 问题 : https://oj.leetcode.com/problems/implement-strstr/ 我的解答: int strStr(char *haystack, char *needle) { if (!*needle) return 0; if (!*haystack) return -1; char* ph, *pn; ph = haystack; for (int i = 0;*ph; ++i

【LeetCode从零单排】No28 Implement strStr()

题目 Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 代码 public class Solution { public int strStr(String haystack, String needle) { if( needle.length()==0) return 0; if(hayst