zoukankan      html  css  js  c++  java
  • implement-stack-using-queues(easy,但也有思考价值)

    https://leetcode.com/problems/implement-stack-using-queues/

    还有种方法,就是利用同一个队列,知道队列长度前提下,把内容从头到尾,再向尾部依次重推一下。

    package com.company;
    
    
    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.Queue;
    
    class Solution {
        Queue[] queues;
        int cur;
        Solution() {
            queues = new LinkedList[2];
            queues[0] = new LinkedList<Integer>();
            queues[1] = new LinkedList<Integer>();
            cur = 0;
        }
    
        // Push element x onto stack.
        public void push(int x) {
            queues[cur].offer(x);
        }
    
        // Removes the element on top of the stack.
        public void pop() {
            change(true);
        }
    
        // Get the top element.
        public int top() {
            return change(false);
        }
    
        private int change(boolean pop) {
            int next = (cur + 1) % 2;
            int num = (int)queues[cur].poll();
            while (!queues[cur].isEmpty()) {
                queues[next].offer(num);
                num = (int)queues[cur].poll();
            }
    
            if (!pop) {
                queues[next].offer(num);
            }
            cur = next;
            return num;
        }
    
        // Return whether the stack is empty.
        public boolean empty() {
            return queues[cur].isEmpty();
        }
    }
    
    public class Main {
    
        public static void main(String[] args) throws InterruptedException {
    
            System.out.println("Hello!");
            Solution solution = new Solution();
    
            // Your Codec object will be instantiated and called as such:
            solution.push(1);
            solution.push(2);
            solution.push(3);
            int ret = solution.top();
            System.out.printf("ret:%d
    ", ret);
            solution.pop();
            ret = solution.top();
            System.out.printf("ret:%d
    ", ret);
            solution.pop();
            ret = solution.top();
            System.out.printf("ret:%d
    ", ret);
    
            System.out.println();
    
        }
    
    }
  • 相关阅读:
    CC
    codeforces 984 E. Elevator
    codeforces 984 D. XOR-pyramid
    codeforces 984 C. Finite or not?
    codeforces 984 B. Minesweeper
    codeforces 984 A. Game
    Loj #6000. 「网络流 24 题」搭配飞行员
    2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest 训练报告
    省赛训练 分块9题
    AC自动机 hdu 2222 Keywords Search
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6058471.html
Copyright © 2011-2022 走看看