您好,登錄后才能下訂單哦!
題目描述
定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的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]
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。