棧找最小值問題

2021-08-30 14:04:12 字數 625 閱讀 5113

question:

實現乙個特殊的棧,在實現棧的基本功能的基礎上,在實現回棧中最小元素的操作

thinking:

sketch:

定義倆個棧。同時壓入同時彈出,比如說乙個data,乙個min,當data棧新壓入的數大於min的棧頂,重複壓入min棧頂數

detailed:

分別定義data,min倆個棧,

push

函式中,判斷

min棧是否為空,傳入的數是否比

min棧頂元素小,如果小壓入傳入數值,如果傳入的數大於

min棧頂元素,將傳入的數壓入

data

棧, getmin函式中判斷min棧是否空,返回min棧頂元素,既是當前data棧最小值。

pop函式總判斷data棧是否為空,當data棧出棧的

元素等於getmin函式,即min棧頂元素。

具體實現如下:

#include#includeusing namespace std;

class stackmini

void push(int digital)

int getmin()

int pop()

};

同時找最大最小值

題目定義 給定乙個大小為n的陣列,無序,找到其中的最大值和最小值,要求元素間的比較次數盡可能少。這道題出自 演算法導論 創新工場2016校招筆試也考了這道題。以下摘自 演算法導論 事實上,我們只需要最多3 n 2 次比較就可以同時找到最小值和最大值。具體的方法是記錄已知的最大值和最小值,然後對輸入元...

題解 洛谷 找最小值

週末三更最後一篇qwq 今天繼續無聊,枯燥無味的題解。今天的題目是一道可以偷懶的題目 其實主要是因為我懶 我的思路是先讀入n,在主函式裡宣告乙個有n個元素的一維陣列 資料很水 讀入,然後使用stl庫的sort排序函式給陣列排序,輸出下標0的元素就可以了qwq 環節 include 萬能標頭檔案qwq...

3 2 棧的最小值

ntm inim um int minimum intmin imum 其時間複雜度為o 1 o 1 o 1 該演算法的缺點是當棧中元素較多時浪費了較多空間。以下是實現 和測試 測試結果如圖1所示。實現 class nodewithmin nodewithmin operator nodewithm...