本文執行個體講述了Python實現包含min函數的棧。分享給大家供大家參考,具體如下:
# coding=utf8'''題目:定義棧的資料結構,請在該類型中實現一個能夠得到棧的最小元素的min函數。在該棧中,調用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()
更多關於Python相關內容可查看本站專題:《PythonRegex用法總結》、《Python資料結構與演算法教程》、《Python Socket編程技巧總結》、《Python函數提示總結》、《Python字串操作技巧匯總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧匯總》
希望本文所述對大家Python程式設計有所協助。