Python實現(xiàn)包含min函數(shù)的棧
本文實例講述了Python實現(xiàn)包含min函數(shù)的棧。分享給大家供大家參考,具體如下:
# coding=utf8 ''' 題目:定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧的最小元素的min函數(shù)。 在該棧中,調(diào)用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()
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python正則表達式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python實現(xiàn)根據(jù)窗口標題調(diào)用窗口的方法
這篇文章主要介紹了python實現(xiàn)根據(jù)窗口標題調(diào)用窗口的方法,涉及Python操作窗口的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法
今天小編就為大家分享一篇Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python中利用pyqt5制作指針鐘表顯示實時時間(指針時鐘)
這篇文章主要介紹了Python中利用pyqt5制作指針鐘表顯示實時時間(動態(tài)指針時鐘),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式
這篇文章主要介紹了PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02