Python實(shí)現(xiàn)包含min函數(shù)的棧
本文實(shí)例講述了Python實(shí)現(xiàn)包含min函數(shù)的棧。分享給大家供大家參考,具體如下:
# coding=utf8
'''
題目:定義棧的數(shù)據(jù)結(jié)構(gòu),請(qǐng)?jiān)谠擃愋椭袑?shí)現(xiàn)一個(gè)能夠得到棧的最小元素的min函數(shù)。
在該棧中,調(diào)用min、push及pop的時(shí)間復(fù)雜度都是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正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
OpenCV實(shí)現(xiàn)圖像平滑處理的方法匯總
這篇文章為大家詳細(xì)介紹了在圖像上面進(jìn)行了圖像均值濾波、方框?yàn)V波 、高斯濾波、中值濾波、雙邊濾波、2D卷積等具體操作的方法,需要的可以參考一下2023-02-02
python實(shí)現(xiàn)根據(jù)窗口標(biāo)題調(diào)用窗口的方法
這篇文章主要介紹了python實(shí)現(xiàn)根據(jù)窗口標(biāo)題調(diào)用窗口的方法,涉及Python操作窗口的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
python的鏈表基礎(chǔ)知識(shí)點(diǎn)
在本篇文章里小編給大家整理的是一篇關(guān)于python的鏈表基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考學(xué)習(xí)下。2020-09-09
Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇
pencv是用于快速處理圖像處理、計(jì)算機(jī)視覺問題的工具,支持多種語言進(jìn)行開發(fā)如c++、python、java等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下2022-11-11
Python中利用pyqt5制作指針鐘表顯示實(shí)時(shí)時(shí)間(指針時(shí)鐘)
這篇文章主要介紹了Python中利用pyqt5制作指針鐘表顯示實(shí)時(shí)時(shí)間(動(dòng)態(tài)指針時(shí)鐘),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式
這篇文章主要介紹了PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample?Dropout方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
實(shí)例解析Python設(shè)計(jì)模式編程之橋接模式的運(yùn)用
這篇文章主要介紹了Python設(shè)計(jì)模式編程之橋接模式的運(yùn)用,橋接模式主張把抽象部分與它的實(shí)現(xiàn)部分分離,需要的朋友可以參考下2016-03-03

