Back to Leetcode Go

225. Implement Stack using Queues

website/content/ChapterFour/0200~0299/0225.Implement-Stack-using-Queues.md

1.7.12.4 KB
Original Source

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.

Example:


MyStack stack = new MyStack();

stack.push(1);
stack.push(2);  
stack.top();   // returns 2
stack.pop();   // returns 2
stack.empty(); // returns false

Note:

  • You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid.
  • Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
  • You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

题目大意

题目要求用队列实现一个栈的基本操作:push(x)、pop()、top()、empty()。

解题思路

按照题目要求实现即可。

代码

go

package leetcode

type MyStack struct {
	enque []int
	deque []int
}

/** Initialize your data structure here. */
func Constructor225() MyStack {
	return MyStack{[]int{}, []int{}}
}

/** Push element x onto stack. */
func (this *MyStack) Push(x int) {
	this.enque = append(this.enque, x)
}

/** Removes the element on top of the stack and returns that element. */
func (this *MyStack) Pop() int {
	length := len(this.enque)
	for i := 0; i < length-1; i++ {
		this.deque = append(this.deque, this.enque[0])
		this.enque = this.enque[1:]
	}
	topEle := this.enque[0]
	this.enque = this.deque
	this.deque = nil

	return topEle
}

/** Get the top element. */
func (this *MyStack) Top() int {
	topEle := this.Pop()
	this.enque = append(this.enque, topEle)

	return topEle
}

/** Returns whether the stack is empty. */
func (this *MyStack) Empty() bool {
	if len(this.enque) == 0 {
		return true
	}

	return false
}


<div style="display: flex;justify-content: space-between;align-items: center;"> <p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0224.Basic-Calculator/">⬅️上一页</a></p> <p><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0226.Invert-Binary-Tree/">下一页➡️</a></p> </div>