LeetCode Algorithm 225. 用队列实现栈

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 225. 用队列实现栈相关的知识,希望对你有一定的参考价值。

225. 用队列实现栈

Ideas

队列和栈的相互操作,需要特别理解栈和队列这两种数据结构的相同点和不同点。

栈:先进后出,队列:先进先出。

既然数据结构已经限定元素进出的顺序,那么单纯的用一个队列肯定是没办法实现栈的操作的,所以我们想能不能用两个队列实现栈的操作。

首先考虑pop()操作,要移除并返回栈顶元素,假设我们有一个正常入队的队列q1,因为栈是先进后出的操作,所以我们要移除并返回的是q1的最后一个元素。

所以我们可以先把q1中的元素都出队,然后到q2入队,直到q1只剩下1个元素为止,把这个元素弹出并返回。

然后再把q2中的元素出队,入到q1中,这个操作就完成了,保证所有的元素都在q1中,这样好判断empty()和top(),

分析完了之后,我们发现push()操作只需要把元素正常入队q1就欧克了。

Code

Python

然后,我就发现Python的deque不仅支持append()还支持appendleft(),不仅支持pop()还支持popleft(),我擦,你这么全能干嘛,瞬间不想写了。

from collections import deque


class MyStack:

	def __init__(self):
		self.q1, self.q2 = deque(), deque()

	def push(self, x: int) -> None:
		self.q1.append(x)

	def pop(self) -> int:
		return self.q1.pop()

	def top(self) -> int:
		return self.q1[-1]

	def empty(self) -> bool:
		return len(self.q1) == 0

以上是关于LeetCode Algorithm 225. 用队列实现栈的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 225. 用队列实现栈

LeetCode--225--用队列实现栈

LeetCode——225. 用队列实现栈

leetcode225. 用队列实现栈

LeetCode225——用队列实现栈

[LeetCode] 225. Implement Stack using Queues 用队列来实现栈