[Lintcode]12. Min Stack /[Leetcode]155. Min Stack
12. Min Stack / 155. Min Stack
- 本题难度: Medium/Easy
- Topic: Data Structure
Description
import heapq
import collections
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
def push(self, x: 'int') -> 'None':
if len(self.stack) == 0:
self.stack.append((x,x))
return
if self.stack[-1][1]<x:
self.stack.append((x,self.stack[-1][1]))
else:
self.stack.append((x,x))
return
def pop(self) -> 'None':
return self.stack.pop()[0]
def top(self) -> 'int':
return self.stack[-1][0]
def getMin(self) -> 'int':
return self.stack[-1][1]
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()
我的代码
import heapq
import collections
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
def push(self, x: 'int') -> 'None':
if len(self.stack) == 0:
self.stack.append((x,x))
return
if self.stack[-1][1]<x:
self.stack.append((x,self.stack[-1][1]))
else:
self.stack.append((x,x))
return
def pop(self) -> 'None':
return self.stack.pop()[0]
def top(self) -> 'int':
return self.stack[-1][0]
def getMin(self) -> 'int':
return self.stack[-1][1]
# 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()
别人的代码
思路
参考了Leetcode Discussion代码。
getmin只需要get就好了,不需要弹出,所以并不需要heap来改变结构。
- 时间复杂度 O(n)