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

Условие

Необходимо реализовать стек, используя только очереди. Стек должен поддерживать операции push(x) (добавление элемента), pop() (удаление и возврат верхнего элемента), top() (возврат верхнего элемента без удаления) и empty() (проверка, пуст ли стек). Для реализации можно использовать стандартную очередь с операциями добавления в конец и удаления из начала.

Решение

class MyStack {
    private val queue = ArrayDeque<Int>()
    
    fun push(x: Int) {
        queue.addLast(x)
        for (i in 1 until queue.size) {
            queue.addLast(queue.removeFirst())
        }
    }
    
    fun pop(): Int {
        return queue.removeFirst()
    }
    
    fun top(): Int {
        return queue.first()
    }
    
    fun empty(): Boolean {
        return queue.isEmpty()
    }
}