本文實例講述了Python實現(xiàn)包含min函數(shù)的棧。分享給大家供大家參考,具體如下:
# coding=utf8'''題目:定義棧的數(shù)據(jù)結構,請在該類型中實現(xiàn)一個能夠得到棧的最小元素的min函數(shù)。在該棧中,調用min、push及pop的時間復雜度都是O(1)。'''class Stack(): def __init__(self): self.main_stack = [] # 輔助棧,每次次最小的元素壓入輔助棧 self.assist_stack = [] # 記錄棧中的最小元素 self._min = None def min(self): return self._min def push(self, data): self.main_stack.append(data) if self._min is None: self._min = data else: if data < self._min: self._min = data # 將最小的元素壓入輔助棧 self.assist_stack.append(self._min) def pop(self): if len(self.main_stack) == 0: raise Exception('no data') elif len(self.main_stack) == 1: self.assist_stack.pop() self._min = None return self.main_stack.pop() else: self.assist_stack.pop() self._min = self.assist_stack[-1] return self.main_stack.pop()if __name__ == '__main__': s = Stack() s.push(3) s.push(4) s.push(2) s.push(1) print s.min() s.pop() s.pop() print s.min() s.pop() print s.min() s.pop() print s.min() s.pop() 


















