真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

劍指offer:包含min函數(shù)的棧

題目描述
定義棧的數(shù)據(jù)結(jié)構(gòu),請(qǐng)?jiān)谠擃愋椭袑?shí)現(xiàn)一個(gè)能夠得到棧中所含最小元素的min函數(shù)(時(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ì),那么我們可以增加一個(gè)保存輔助棧來保存最小值。
    假設(shè)我們?cè)O(shè)計(jì)兩個(gè)存儲(chǔ)棧,一個(gè)叫數(shù)據(jù)棧,一個(gè)叫最小棧。
    當(dāng)數(shù)據(jù)棧有壓入操作的時(shí)候,最小棧也執(zhí)行一個(gè)壓入操作,但是壓入的值是當(dāng)前數(shù)據(jù)棧中的最小值;
    當(dāng)數(shù)據(jù)棧有彈出操作的時(shí)候,最小棧也執(zhí)行一個(gè)一樣的常規(guī)彈出操作
    """
    def __init__(self):
        self.min_stack = []
        self.data_stack = []

    def push(self, node):
        # 入棧的時(shí)候只需要壓入當(dāng)前數(shù)據(jù)棧中的最小值,
        # 那么當(dāng)出棧的時(shí)候如果數(shù)據(jù)棧彈出的是最小值,那么最小棧也彈出了最小值
        # 如果數(shù)據(jù)棧彈出的不是最小值,那么最小棧彈出之后全局最小值還保留在棧中。

        # 通過這樣設(shè)計(jì),最小棧的棧頂永遠(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]

新聞標(biāo)題:劍指offer:包含min函數(shù)的棧
轉(zhuǎn)載來源:http://weahome.cn/article/gccjoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部