zoukankan      html  css  js  c++  java
  • Java-Stack&Queue-LeetCode

    Implement Queue using Stacks
    
    class MyQueue {  
        Stack<Integer> s1 = new Stack<>();  
        Stack<Integer> s2 = new Stack<>();  
      
        // 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.isEmpty()) return s2.peek();  
            else {  
                while(!s1.isEmpty()) s2.push(s1.pop());  
                return s2.peek();  
            }  
        }  
      
        // Return whether the queue is empty.  
        public boolean empty() {  
            return s1.empty() && s2.empty();  
        }  
    }  
    Implement Stack using Queues
    
    class MyStack {  
        // Push element x onto stack.  
        Queue<Integer> q1 = new LinkedList<Integer>();  
        Queue<Integer> q2 = new LinkedList<Integer>();  
          
        public void push(int x) {  
            q1.offer(x);  
        }  
      
        // Removes the element on top of the stack.  
        public void pop() {  
            while(q1.size()>1) q2.offer(q1.poll());  
            q1.poll();  
            Queue<Integer> q = q1;  
            q1 = q2;  
            q2 = q;  
        }  
      
        // Get the top element.  
        public int top() {  
            while(q1.size()>1) q2.offer(q1.poll());  
            int x = q1.poll();  
            q2.offer(x);  
            Queue<Integer> q = q1;  
            q1 = q2;  
            q2 = q;  
            return x;  
        }  
      
        // Return whether the stack is empty.  
        public boolean empty() {  
            return q1.isEmpty();  
        }  
    }  

    offer 添加一个元素并返回true 如果队列已满,则返回false
    poll 移除并返问队列头部的元素 如果队列为空,则返回null
    peek 返回队列头部的元素 如果队列为空,则返回null
    put 添加一个元素 如果队列满,则阻塞
    take 移除并返回队列头部的元素 如果队列为空,则阻塞
    element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常

    add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
    remove 移除并返回队列头部的元素 如果队列为空,则抛出一个
    NoSuchElementException异常

    注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。

    JavaScript:

    http://www.111cn.net/wy/js-ajax/74924.htm

    UNshift(); --> pop()属于Queue先进先出

    push();---> pop()属于stack后进先出

    push是在末尾添加,而unshift则是在开头添加

  • 相关阅读:
    各种文件的mime类型
    LeetCode_122. Best Time to Buy and Sell Stock II
    LeetCode_121. Best Time to Buy and Sell Stock
    LeetCode_119. Pascal's Triangle II
    LeetCode_118. Pascal's Triangle
    LeetCode_112. Path Sum
    LeetCode_111. Minimum Depth of Binary Tree
    LeetCode_110. Balanced Binary Tree
    LeetCode_108. Convert Sorted Array to Binary Search Tree
    LeetCode_107. Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/Decmber/p/4921909.html
Copyright © 2011-2022 走看看