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\n", ret);
        solution.pop();
        ret = solution.top();
        System.out.printf("ret:%d\n", ret);
        solution.pop();
        ret = solution.top();
        System.out.printf("ret:%d\n", ret);

        System.out.println();

    }

}
时间: 2024-10-14 10:03:45

implement-stack-using-queues(easy,但也有思考价值)的相关文章

[LeetCode][JavaScript]Implement Stack using Queues

Implement Stack using Queues Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empt

232. Implement Queue using Stacks &amp;&amp; 225. Implement Stack using Queues

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 whet

leetcode_225题——Implement Stack using Queues (队列,栈)

Implement Stack using Queues Total Accepted: 9609 Total Submissions: 31710My Submissions Question Solution Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the st

(easy)LeetCode 225.Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. Notes: You must use only s

Implement Stack using Queues leetcode

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. 不用多想,可以使用两个queue来实现,代码如下 耗

leetcode Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. Notes: You must use only s

LeetCode225:Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – Get the top element. empty() – Return whether the stack is empty. Notes: You must use only stand

Implement Stack using Queues

Description: Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. Notes: You mu

LeetCode 225 Implement Stack using Queues(用队列来实现栈)(*)

翻译 用队列来实现栈的例如以下操作. push(x) -- 将元素x加入进栈 pop() -- 从栈顶移除元素 top() -- 返回栈顶元素 empty() -- 返回栈是否为空 注意: 你必须使用一个仅仅有标准操作的队列. 也就是说,仅仅有push/pop/size/empty等操作是有效的. 队列可能不被原生支持.这取决于你所用的语言. 仅仅要你仅仅是用queue的标准操作,你能够用list或者deque(double-ended queue)来模拟队列. 你能够如果全部的操作都是有效的(

[leetcode] 225. Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whether the stack is empty. Notes: You must use only s