题目:实现一个栈,具有常量时间复杂度的push、pop、top和getMin操作。
解决方法:
class MinStack:
def __init__(self):
self.stack = []
self.min_stack = []
def push(self, x: int) -> None:
self.stack.append(x)
if not self.min_stack or x <= self.min_stack[-1]:
self.min_stack.append(x)
def pop(self) -> None:
if self.stack.pop() == self.min_stack[-1]:
self.min_stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.min_stack[-1]
from collections import deque
class MyStack:
def __init__(self):
self.queue = deque()
def push(self, x: int) -> None:
self.queue.append(x)
size = len(self.queue)
while size > 1:
self.queue.append(self.queue.popleft())
size -= 1
def pop(self) -> int:
return self.queue.popleft()
def top(self) -> int:
return self.queue[0]
def empty(self) -> bool:
return len(self.queue) == 0
注意:以上两种方法都是基于Python语言的实现,其他编程语言可以根据相应语法做相应的调整。
上一篇:AmazonManagedWorkflowsforApacheAirflow中,私有MWAA与Snowflake之间的连接问题。
下一篇:AmazonMQ(ApacheActiveMQ)EventSourceLambdapayloadismissingDestination