• [leedcode 232] Implement Queue using Stacks


    Implement the following operations of a queue using stacks.

    • push(x) -- Push element x to the back of queue.
    • pop() -- Removes the element from in front of queue.
    • peek() -- Get the front element.
    • empty() -- Return whether the queue is empty.

    Notes:

      • You must use only standard operations of a stack -- which means only push to toppeek/pop from topsize, and is empty operations are valid.
      • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
      • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
        class MyQueue {
            //用两个栈实现队列
            //push时push到一个栈,pop时,需要先判断2栈是否为空,如果不为空,直接弹2栈的栈顶,如果为空,需要将1栈的元素转移到2栈中
            //注意stack判空empty和isEmpty都可以使用
            Stack<Integer> s1=new Stack<Integer>();
            Stack<Integer> s2=new Stack<Integer>();
            // Push element x to the back of queue.
            public void push(int x) {
               s1.push(x); 
            }
        
            // Removes the element from in front of queue.
            public void pop() {
               if(!s2.isEmpty()){
                   s2.pop();
               }else{
                   while(!s1.isEmpty()){
                      s2.push(s1.pop()); 
                   }
                   s2.pop();
               }
            }
        
            // Get the front element.
            public int peek() {
                if(!s2.empty()){
                   return s2.peek();
               }else{
                   while(!s1.empty()){
                      s2.push(s1.pop()); 
                   }
                   return s2.peek();
               }
            }
        
            // Return whether the queue is empty.
            public boolean empty() {
                return s1.isEmpty()&&s2.empty();
            }
        }
  • 相关阅读:
    windows中android SDK manager安装更新sdk很慢,或者出现Done loading packages后不动甚至没有任何可用包
    实用小函数
    UML类图几种关系的总结
    TextView自动换行
    Android launchMode=singleInstalce 与onActivityResult
    红黑树
    二叉查找树相关算法
    添加google账户时无法与服务器建立连接
    ubuntu 下eclipse svn更改用户
    ubuntu adb: command not found
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4713468.html
Copyright © 2020-2023  润新知