LeetCode in Kotlin

225. Implement Stack using Queues

Easy

Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (push, top, pop, and empty).

Implement the MyStack class:

Notes:

Example 1:

Input [“MyStack”, “push”, “push”, “top”, “pop”, “empty”] [[], [1], [2], [], [], []]

Output: [null, null, null, 2, 2, false]

Explanation:

MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return False 

Constraints:

Follow-up: Can you implement the stack using only one queue?

Solution

import java.util.LinkedList
import java.util.Queue

class MyStack() {
    private val queue1: Queue<Int> = LinkedList()
    private val queue2: Queue<Int> = LinkedList()

    fun push(x: Int) {
        queue1.add(x)
    }

    fun pop(): Int {
        while (queue1.size > 1) {
            queue2.add(queue1.remove())
        }
        val top = queue1.remove()
        queue1.clear()
        queue1.addAll(queue2)
        queue2.clear()
        return top
    }

    fun top(): Int {
        while (queue1.size > 1) {
            queue2.add(queue1.remove())
        }
        val top = queue1.remove()
        queue2.add(top)
        queue1.clear()
        queue1.addAll(queue2)
        queue2.clear()
        return top
    }

    fun empty(): Boolean {
        return queue1.isEmpty()
    }
}

/*
 * Your MyStack object will be instantiated and called as such:
 * var obj = MyStack()
 * obj.push(x)
 * var param_2 = obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.empty()
 */
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy