Leetcode 155题 Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> Returns -3.
minStack.pop();
minStack.top(); --> Returns 0.
minStack.getMin(); --> Returns -2.
题目大意: 定义几个原始功能。
因为python是层级很高的语言,很多最基础的操作都被封装起来了。很多答案的不同解法其实都大同小异,其本质都是一样的。会一个就都会了。 直接放代码。
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack=[]
self.min= float("inf") #最小值为‘无限大’,每次遍历都比较更新。
def push(self, x: int) -> None:
if x <= self.min:
self.stack.append(self.min)
self.min = x #更新最小值。
self.stack.append(x) #本质是用append方法构造push方法。
def pop(self) -> None:
peak = self.stack.pop() #本质还是python的.pop方法。
if peak == self.min: #更新最小值。
self.min = self.stack.pop()
return peak
def top(self) -> int:
return self.stack[-1] #返回栈底元素。
def getMin(self) -> int:
return self.min
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
2020/03/24 疫情中的英国。
leetcode越做越快,加油!