前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >232. 用栈实现队列

232. 用栈实现队列

作者头像
程序员小王
发布2019-08-20 11:53:38
2770
发布2019-08-20 11:53:38
举报
文章被收录于专栏:架构说架构说
  1. Implement Queue using Stacks

题目描述

使用栈实现队列的下列操作:

push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。

题目理解

1. 当前题目感觉是什么

第一感觉是 很简单,不就是get 和set 则2个操作吗

但是实现起来不容易,不知道里面要点是什么? 还是一片雾水,急着去看答案是没用的,只是浪费你更多时间。

2 . 写出2个测试案例(最简单的,和稍微复杂一点的)。

case1 同时插入 3 个记录 12 11 2 ,同时pop3个记录12 11 2

case 2 同时插入 abc 2个记录(12 11 ),pop 1个记录(12),然后在插入1个记录

image.png

必须用2个栈来完成操作,一个负责存储A ,一个负责查询B

关键地方是 pop时候 必须是最先进入的,

如果case1 全部 从存储A,直接拿出就可以 如果是case2:因为必须按照顺序,因为B还有记录 如果在从A全部拿出。结果就不正确了。

参考答案

image.png

代码语言:javascript
复制
class MyQueue {
    private:

    stack<int> m_input;

    stack<int> m_output;

public:
    /** Initialize your data structure here. */
    MyQueue() {

    }

    /** Push element x to the back of queue. */
    void push(int x) {
        m_input.push(x);
    }

    /** Removes the element from in front of queue and returns that element. */
    int pop() {

      int result=peek();
      m_output.pop();
      return result;
    }

    /** Get the front element. */
    int peek() {

      if ( m_output.empty()) 
      {
          while ( !m_input.empty())
          {
              m_output.push(m_input.top());
              m_input.pop();
          }
      }

      return   m_output.top();
    }

    /** Returns whether the queue is empty. */
    bool empty() {

        return m_input.empty() && m_output.empty();
    }
};

举一反三

用栈实现队列,在下面场景 例如

  1. 一次插入3个元素,然后出队列 2个元素,
  2. 然后在插入3个元素,这个测试场景。

自己没有想到, 队列是2端插入,不回遇到这样问题。栈只是一端操作,需要2个栈来实现

下一题目

LRU

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Offer多多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 题目理解
    • 1. 当前题目感觉是什么
      • 2 . 写出2个测试案例(最简单的,和稍微复杂一点的)。
      • 参考答案
      • 举一反三
      • 下一题目
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档