包含min函式的棧

2021-09-11 19:08:59 字數 936 閱讀 8370

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

思路:

當我們看到這道題要求時間複雜度為o(1),所以求最小值,肯定不能用遍歷的方法進行。這時我們應該想到用乙個位置存這個最小值,我在這利用了乙個輔助棧來實現,輔助棧的棧頂元素一直是儲存的最小值。

當push時,我們通過判斷這個數值跟輔助棧的棧頂元素大小進行比較,如果這個數值比棧頂元素小入棧,否者不入棧。

當pop時,首先是判斷輔助棧頂元素跟當前棧的元素是否一致,如果一樣倆個棧頂元素都出去,否者出去當前棧頂元素。

當min時,直接輸出輔助棧頂元素。

# -*- coding:utf-8 -*-

class solution:

def __init__(self):

self.stack1 =

self.stack2 =

def push(self, node):

if not self.stack2 or node# write code here

def pop(self):

if self.stack1:

if self.stack1[-1]==self.stack2[-1]:

self.stack2.pop()

return self.stack1.pop()

# write code here

def top(self):

if self.stack1:

return self.stack1[-1]

# write code here

def min(self):

if self.stack2:

return self.stack2[-1]

# write code here

js 包含min函式的棧 包含min函式的棧

目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...

包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...

包含min函式的棧

1.問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o 1 來自 劍指offer 2.分析 我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o 1 的這個需求。當我們壓棧時,另外乙個棧正常進行,...