包含min函式的棧

2022-08-29 01:12:07 字數 824 閱讀 7116

題目:定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min、push以及pop的時間複雜度都是o(1)。

思路:

定義兩個棧,乙個棧data用來正常壓入、彈出資料,另乙個棧min,壓入的時候壓入當前最小的數,彈出的時候也彈出最小的數

當壓入棧的時候,如果壓入的資料小於當前棧中最小的數(記為premin),則壓入該value,否則在壓入一次先前最小的數(premin),這樣min棧中的頂端永遠是最小的數,min函式中直接return即可。而彈出棧的時候講兩個棧全部彈出即可。

實現**:

下面定義的mystack類為 包含min函式的棧 的具體實現類

#include#include 

#include

using

namespace

std;

template

class

mystack;//

push函式的實現,data棧正常進資料,min棧進入當前棧中最小的資料

template void mystack::mypush(const t&value)

//pop函式的實現,data,min棧正常彈出資料

template void mystack::mypop()

else}//

min函式的實現,獲得當前棧中的最小資料

template const t& mystack::mymin()

測試**以及執行結果:

int

main()

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 的這個需求。當我們壓棧時,另外乙個棧正常進行,...