最小棧操作

2021-10-04 06:27:23 字數 773 閱讀 8523

實現乙個最小棧,有三種操作,min:得到棧中的最小值,push:在棧頂插入乙個元素,pop:彈出棧頂元素,使這三種操作的時間複雜度都是o(1)

第一行是乙個數q,接下來q行每行表示乙個操作,每行首先是操作op

若op==0,則輸出當前棧中的最小值;

若op==1,表示push,接著正整數x,把在x放進棧頂;

若op==2,表示pop,彈出棧頂元素

保證q<=500000,保證op==0或2時(即min操作和pop操作時)棧不為空。

你可以假設一開始棧的空的。

對應每個op==0或2,如果是op==0輸出當前棧中的最小值,如果是op==2輸出彈出的元素。
示例1

7

1 31 4

01 202

0

322

3

#include #includeusing namespace std;

class minstack

void pop()

else

return;

}int top()

int min()

else

return 0;

}private:

stackm_data;//資料棧

stackm_min;//輔助棧

};int main()

else if(op == 2)

}return 0;

}

帶最小值操作的棧

描述 實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。樣例 push 1 pop return 1 push 2 push 3 min return 2 push 1 min return ...

最小棧 最小棧的實現與優化

實現乙個最小棧,一步一步優化,從額外空間o n 到o 1 push,pop,top,getmin都是o 1 時間。空間消耗o n 如何優化到o 1 class minstack1 void pop int top int getmin 如何只用乙個棧實現最小棧的實現?入棧順序 2,1,3,4,2,0...

leetcode 棧 155 最小棧

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...