91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

劍指offer:包含min函數的棧

發布時間:2020-07-20 21:59:54 來源:網絡 閱讀:233 作者:Jayce_SYSU 欄目:編程語言

題目描述
定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間復雜度應為O(1))。

class Solution:
    """
    由于需要包含min函數且滿足棧的性質,那么我們可以增加一個保存輔助棧來保存最小值。
    假設我們設計兩個存儲棧,一個叫數據棧,一個叫最小棧。
    當數據棧有壓入操作的時候,最小棧也執行一個壓入操作,但是壓入的值是當前數據棧中的最小值;
    當數據棧有彈出操作的時候,最小棧也執行一個一樣的常規彈出操作
    """
    def __init__(self):
        self.min_stack = []
        self.data_stack = []

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

        # 通過這樣設計,最小棧的棧頂永遠保存著全局的最小值,這樣我們就可以通過min函數獲取最小值
        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]
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常德市| 双流县| 喜德县| 沁源县| 凤阳县| 游戏| 福泉市| 富民县| 蓬莱市| 屏边| 沂南县| 麟游县| 彰武县| 新化县| 金湖县| 宁南县| 南投县| 满城县| 盘锦市| 延寿县| 高州市| 平泉县| 宁德市| 景德镇市| 铁力市| 安平县| 红桥区| 元谋县| 和硕县| 乌审旗| 灵石县| 泌阳县| 河源市| 繁昌县| 西宁市| 米脂县| 云梦县| 石柱| 通州市| 车致| 靖江市|