zoukankan      html  css  js  c++  java
  • 用两个栈实现队列

    用两个栈实现队列
    • 参与人数: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

     

  • 相关阅读:
    20.Valid Parentheses
    67.Add Binary
    String、StringBuilder、StringBuffer
    15句乔布斯经典语录(中英文)
    几个高逼格 Linux 命令!
    几个高逼格 Linux 命令!
    24 个必须掌握的数据库面试问题!
    24 个必须掌握的数据库面试问题!
    chrome开发者工具各种骚技巧
    chrome开发者工具各种骚技巧
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4843495.html
Copyright © 2011-2022 走看看