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

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12796491.html

    用两个栈实现队列()

    题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/

    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

    示例 1:

    输入:
    ["CQueue","appendTail","deleteHead","deleteHead"]
    [[],[3],[],[]]
    输出:[null,null,3,-1]
    示例 2:

    输入:
    ["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
    [[],[],[5],[2],[],[]]
    输出:[null,-1,null,null,5,2]

    题解:

             题意:实现两个函数appendTail 和 deleteHead,在尾部插入,在头删除。给的示例,上面给的是操作,下面是操作后实现了什么。

           例如例1:输入了CQueue创建了一个队列,然后输入appendTail",在队列中添加了一个3,deleteHead删除3后,队列里为空。

             思路:

                      1.建立两个栈。

                       2.用一个栈添加元素。

                       3.用一个栈来删除元素,注意这里是在头部删除节点,而元素入栈时,会把头部元素放到栈底,所以需要利用另外一个栈,把当前添加元素的栈元素出栈stack1,重新入栈到stack2中,然后取stack2的栈顶元素即为栈顶元素。

    代码如下:

    class CQueue {
        public Stack<Integer> stack1;
        public Stack<Integer> stack2;
    
        public CQueue() {
            stack1=new Stack<Integer>();
            stack2=new Stack<Integer>();
        }
        
        public void appendTail(int value) {
           stack1.push(value);
        }
        
        public int deleteHead() {
          if(stack2.size()<=0)
          {
              if(stack1.size()<=0){
                  return -1;
              }
              for(int i=stack1.size();i>0;i--)
              {
                  stack2.push(stack1.pop());
              }
          }
          return stack2.pop();
        }
    }
  • 相关阅读:
    MySQL添加用户、删除用户与授权
    JavaWeb学习总结(七)—HttpServletRequest
    JavaWeb学习总结(六)—HttpServletResponse
    JavaWeb学习总结(五)—Myecplise的优化
    JavaWeb学习总结(四)—ServletConfig和ServletContext
    JavaWeb学习总结(三)—Servlet
    JavaWeb学习总结(二)—http协议
    JavaWeb学习总结(一)—JavaWeb开发入门及环境搭建
    Oracle入门笔记 ——启动
    面试题:整数反序
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12796491.html
Copyright © 2011-2022 走看看