对于栈和队列的概念不是了解,所以答案直接用的代码随想录的。之后还需要再复习。
具体差别:知了好学-专业教育培训服务平台
# 232.用栈实现队列
- 链接:栈的基本操作! | LeetCode:232.用栈实现队列_哔哩哔哩_bilibili
- 答案:
class MyQueue(object):
def __init__(self):
self.stack_in = []
self.stack_out = []
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.stack_in.append(x)
def pop(self):
"""
:rtype: int
"""
if self.empty():
return None
if self.stack_out:
return self.stack_out.pop() # 默认移除列表最后一个元素
else:
for i in range(len(self.stack_in)):
self.stack_out.append(self.stack_in.pop())
return self.stack_out.pop()
def peek(self):
"""
:rtype: int
"""
ans = self.pop()
self.stack_out.append(ans)
return ans
def empty(self):
"""
:rtype: bool
"""
return not (self.stack_in or self.stack_out)
# 225.用队列实现栈
- 链接:队列的基本操作! | LeetCode:225. 用队列实现栈_哔哩哔哩_bilibili
- 答案:
class MyStack(object):
def __init__(self):
self.queue_in = deque()
self.queue_out = deque()
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.queue_in.append(x)
def pop(self):
"""
:rtype: int
"""
if self.empty():
return None
for i in range(len(self.queue_in) - 1):
self.queue_out.append(self.queue_in.popleft())
self.queue_in, self.queue_out = self.queue_out, self.queue_in # 交换in和out,这也是为啥in只用来存
return self.queue_out.popleft()
def top(self):
"""
:rtype: int
"""
if self.empty():
return None
return self.queue_in[-1]
def empty(self):
"""
:rtype: bool
"""
return len(self.queue_in) == 0
deque():