第一题 用栈实现队列
题目描述:
https://leetcode.cn/problems/implement-queue-using-stacks/
思路:
具体代码如下:
class MyQueue:
def __init__(self):
self.front = list()
self.rear = list()
def push(self, x: int) -> None:
self.rear.append(x)
def pop(self) -> int:
if self.empty():
return None
if not self.front:
for i in range(len(self.rear)):
self.front.append(self.rear.pop())
return self.front.pop()
def peek(self) -> int:
ans = self.pop()
self.front.append(ans)
return ans
def empty(self) -> bool:
return not (self.front or self.rear)
if __name__ == '__main__':
obj = MyQueue()
for i in range(1,6):
obj.push(i)
print(obj.pop())
print(obj.peek())
print(obj.empty())
第二题 用队列实现栈
题目描述:
https://leetcode.cn/problems/implement-stack-using-queues/
思路:
具体代码如下:
from collections import deque
class MyStack:
def __init__(self):
self.stack = deque()
def push(self, x: int) -> None:
self.stack.append(x)
def pop(self) -> int:
if self.empty():
return None
for i in range(len(self.stack)-1):
self.push(self.stack.popleft())
return self.stack.popleft()
def top(self) -> int:
ans = self.pop()
self.push(ans)
return ans
def empty(self) -> bool:
return len(self.stack) == 0
if __name__ == '__main__':
obj = MyStack()
for x in range(1,6):
obj.push(x)
print(obj.pop())
print(obj.top())
print(obj.empty())