題目描述
定義棧的數(shù)據(jù)結(jié)構(gòu),請在該類型中實現(xiàn)一個能夠得到棧中所含最小元素的min函數(shù)(時間復(fù)雜度應(yīng)為O(1))。

創(chuàng)新互聯(lián)公司從2013年開始,先為上蔡等服務(wù)建站,上蔡等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為上蔡企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
class Solution:
"""
由于需要包含min函數(shù)且滿足棧的性質(zhì),那么我們可以增加一個保存輔助棧來保存最小值。
假設(shè)我們設(shè)計兩個存儲棧,一個叫數(shù)據(jù)棧,一個叫最小棧。
當(dāng)數(shù)據(jù)棧有壓入操作的時候,最小棧也執(zhí)行一個壓入操作,但是壓入的值是當(dāng)前數(shù)據(jù)棧中的最小值;
當(dāng)數(shù)據(jù)棧有彈出操作的時候,最小棧也執(zhí)行一個一樣的常規(guī)彈出操作
"""
def __init__(self):
self.min_stack = []
self.data_stack = []
def push(self, node):
# 入棧的時候只需要壓入當(dāng)前數(shù)據(jù)棧中的最小值,
# 那么當(dāng)出棧的時候如果數(shù)據(jù)棧彈出的是最小值,那么最小棧也彈出了最小值
# 如果數(shù)據(jù)棧彈出的不是最小值,那么最小棧彈出之后全局最小值還保留在棧中。
# 通過這樣設(shè)計,最小棧的棧頂永遠(yuǎn)保存著全局的最小值,這樣我們就可以通過min函數(shù)獲取最小值
self.data_stack.append(node)
self.min_stack.append(min(self.min_stack[-1], node)
if self.min_stack else node)
def pop(self):
if self.data_stack:
self.data_stack.pop(-1)
self.min_stack.pop(-1)
def top(self):
if self.data_stack:
return self.data_stack[-1]
def min(self):
if self.min_stack:
return self.min_stack[-1]
網(wǎng)頁標(biāo)題:劍指offer:包含min函數(shù)的棧
本文URL:http://www.chinadenli.net/article0/gccjoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、移動網(wǎng)站建設(shè)、網(wǎng)站收錄、網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)