总结
1.注意python中一些函数的用法,例如pop函数,以及pop(0),虽然本题没有用到pop(0),但是pop(0)的时间复杂度是O(n)
232.用栈实现队列
题目链接:
自己想
1.就是模拟
看完题解
1.自己写的不够丝滑,主要是在pop中
答案给出:
# def pop(self) -> int:
# """
# Removes the element from in front of queue and returns that element.
# """
# 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 pop(self) -> int:
if self.empty():
return None
if self.list2:
return self.list2.pop()
else:
a = reversed(self.list1)
a = list(a)
self.list2.extend(a)
x = self.list2.pop()
self.list1 = []
return x
完整代码
class MyQueue:
def __init__(self):
self.list1 = []
self.list2 = []
def push(self, x: int) -> None:
self.list1.append(x)
def pop(self) -> int:
if self.empty():
return None
if self.list2:
return self.list2.pop()
else:
a = reversed(self.list1)
a = list(a)
self.list2.extend(a)
x = self.list2.pop()
self.list1 = []
return x
def peek(self) -> int:
result = self.pop()
self.list2.append(result)
return result
def empty(self) -> bool:
if self.list2 or self.list1 :
return False
else:
return True
225. 用队列实现栈
题目链接:
自己想
1.就利用列表,以及对应的append,pop就完成了
看完题解
没看题解
完整代码
class MyStack:
def __init__(self):
self.list1 = []
def push(self, x: int) -> None:
self.list1.append(x)
def pop(self) -> int:
return self.list1.pop()
def top(self) -> int:
n = self.pop()
self.list1.append(n)
return n
def empty(self) -> bool:
if self.list1:
return False
else:
return True
题目链接:
自己想
看完题解
完整代码
在这里插入代码片
题目链接:
自己想
看完题解
完整代码
在这里插入代码片