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();
    
        }
    
    }
  • 相关阅读:
    玩家的numpertpry 对象 中 不仅仅要同步 君主武将的等级,阶级也要同步
    synchronized 的真正含义
    学习笔记——WPF
    学习笔记——AOP
    好记性不如烂笔头——WebService与Remoting
    好记性不如烂笔头——垃圾回收
    “返回顶部”实现一例
    ASP.NET MVC脚本及样式压缩
    设计模式学习笔记——迭代器模式
    设计模式学习笔记——策略模式
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6058471.html
Copyright © 2011-2022 走看看