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

     

  • 相关阅读:
    网络编程之粘包问题
    网络编程初识和socket套接字
    面向对象三大特性
    面向对象进阶
    面向对象初接触
    常用模块(模块初步了解)
    异常处理
    Ubutu Chrome 出现adobe flash is out of date的解决方法
    cmder默认的命令提示符λ改成$
    css在盒子中垂直居中和固定居中
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4843495.html
Copyright © 2011-2022 走看看