• 用两个栈实现队列


    用两个栈实现队列
    • 参与人数:3047时间限制:1秒空间限制:32768K
    • 通过比例:34.71%
    • 最佳记录:0 ms|0K(来自  青哥

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。


      思路1(最普通的方法):
      1、入队时,直接压入到stack1中;
      2、出队时,先将stack1中的所有size-1个元素压入stack2中,然后将stack1的元素弹出;最后将stack2中的元素重新压入到s1中。

      如下图所示:

     1 class Solution
     2 {
     3 public:
     4     void push(int node) {
     5         stack1.push(node);
     6     }
     7 
     8     int pop() {
     9         int t;
    10         while (stack1.size() > 1){
    11             t = stack1.top();
    12             stack2.push(t);
    13             stack1.pop();
    14         }
    15         int rt = stack1.top();
    16         stack1.pop();
    17         while(stack2.size() > 0){
    18             t = stack2.top();
    19             stack1.push(t);
    20             stack2.pop();
    21         }
    22         return rt;
    23     }
    24 
    25 private:
    26     stack<int> stack1;
    27     stack<int> stack2;
    28 };
    View Code

      思路2(优化):

      1、入队时,直接压入到stack1中;
      2、出队时,若stack2不为空,则直接弹出;若stack2为空,则将stack1的size-1个元素压入stack2中,最后弹出stack1中的栈顶元素。

     1 class Solution
     2 {
     3 public:
     4     void push(int node) {
     5         stack1.push(node);
     6     }
     7 
     8     int pop() {
     9         int rt;
    10         if (!stack2.empty()){
    11             rt = stack2.top();
    12             stack2.pop();
    13         }
    14         else{
    15             while (stack1.size() > 1){
    16                 rt = stack1.top();
    17                 stack2.push(rt);
    18                 stack1.pop();
    19             }
    20             rt = stack1.top();
    21             stack1.pop();
    22         }
    23         return rt;
    24     }
    25 private:
    26     stack<int> stack1;
    27     stack<int> stack2;
    28 };
    View Code

     

  • 相关阅读:
    批量修改文件
    mysql-5.5.32-linux2.6-x86_64.tar.gz 二进制源码定制安装MySQL服务器
    源码搭建nginx服务器
    Python--安装
    k8s-修改线程数
    容器卡在terminate状态无法删除
    扩/
    磁盘分区+挂载
    499
    清理磁盘
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4843495.html
Copyright © 2020-2023  润新知