劍指offer 第20題 包含min函式的棧
阿新 • • 發佈:2019-01-11
描述:
定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))
思路:
兩個棧,一個存所有元素,一個存當前的最小元素
程式碼:
class Solution: def __init__(self): self.stack = [] self.stack_min = [] self.min_value = float('inf') def push(self, node): # write code here self.stack.append(node) if node < self.min_value: self.min_value = node self.stack_min.append(node) else: self.stack_min.append(self.min_value) def pop(self): # write code here self.stack_min.pop() if self.stack_min: self.min_value = self.stack_min[-1] else: self.min_value = float('float') return self.stack.pop() def top(self): # write code here return self.stack[-1] def min(self): # write code here return self.stack_min[-1]
結果:
執行時間:28ms
佔用記憶體:5724k