中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

劍指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

库尔勒市| 曲沃县| 西乡县| 湖口县| 盱眙县| 桦甸市| 普陀区| 商南县| 射阳县| 泸州市| 永城市| 冀州市| 会东县| 古交市| 当雄县| 昂仁县| 南和县| 宁阳县| 綦江县| 额济纳旗| 宜宾市| 张家口市| 泗阳县| 桂林市| 昌都县| 江油市| 大渡口区| 名山县| 达孜县| 泸定县| 西和县| 策勒县| 兰坪| 泾阳县| 深水埗区| 突泉县| 洛宁县| 荣昌县| 方正县| 霍城县| 白山市|