剑指 Offer 09. 用两个栈实现队列
class CQueue:
def __init__(self):
self.A, self.B = [], []
def appendTail(self, value: int) -> None:
self.A.append(value)
def deleteHead(self) -> int:
if self.B: return self.B.pop()
if not self.A: return -1
while self.A:
self.B.append(self.A.pop())
return self.B.pop()
class CQueue:
def __init__(self):
self.queue = []
def appendTail(self, value: int) -> None:
self.queue.append(value)
def deleteHead(self) -> int:
if len(self.queue) > 0:
return self.queue.pop(0)
else:
return -1
剑指 Offer 30. 包含min函数的栈
自己写的
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
def push(self, x: int) -> None:
self.stack.append(x)
def pop(self) -> None:
if len(self.stack) > 0:
return self.stack.pop()
def top(self) -> int:
if len(self.stack) > 0:
return self.stack[-1]
def min(self) -> int:
if len(self.stack) > 0:
return min(self.stack)
别人的
class MinStack:
def __init__(self):
self.A, self.B = [], []
def push(self, x: int) -> None:
self.A.append(x)
if not self.B or self.B[-1] >= x:
self.B.append(x)
def pop(self) -> None:
if self.A.pop() == self.B[-1]:
self.B.pop()
def top(self) -> int:
return self.A[-1]
def min(self) -> int:
return self.B[-1]