# -*- coding:utf-8 -*-
"""
Author: leadingme
Mail:leadingme@qq.com
MyWebsite:leadingme.top
"""
# 最小栈的实现
"""
算法要求: 设计一个支持push、pop、top操作并能在常数时间内检索到最小元素的栈
-> push(x): 将元素 x 推入栈中
-> pop(): 删除栈顶元素
-> top(): 获取栈顶元素
-> getMin(): 检索栈中的最小元素
"""
class MinStack(object):
def __init__(self, stack):
"""
初始化数据结构栈
"""
self.stack = stack
def __str__(self):
return str(self.stack)
def push(self, x: int) -> None:
"""
推入一个元素进栈,必须从栈顶插入
"""
self.stack.insert(0, x)
def pop(self) -> None:
"""
弹出栈的栈顶元素
"""
try:
x = self.stack.pop(0)
except Exception as e:
pass
def top(self) -> int:
"""
获取栈的栈顶元素
"""
try:
x = self.stack[0]
except Exception as e:
return None
else:
return x
def getMin(self) -> int:
"""
获取栈中的最小元素
"""
try:
m = min(self.stack)
except Exception as e:
return None
else:
return m
if __name__ == '__main__':
Stack = [1,2,3,4]
obj = MinStack(Stack)
obj.push(0)
print(obj)
obj.pop()
print(obj)
param1 = obj.top()
param2 = obj.getMin()
print(param1, param2)
栈 -(最小栈的实现)python描述
最新推荐文章于 2022-03-10 17:16:38 发布