最小棧的實現

2021-09-28 22:44:37 字數 1028 閱讀 5153

最小棧的實現:

定義兩個棧,乙個資料棧,乙個最小棧;

如果最小棧為空就直接把number壓人棧中

最小棧不為空,就把number與最小棧的棧頂元素進行比較,如果小於最小棧的棧頂元素,就把number壓入最小棧,否則就把number壓入datastack中,

最後返回最小棧的棧頂元素就是最小值

#include

#include

using

namespace std;

class

mystack

;//壓棧

void mystack::

push

(int number)

else

if(number <=

this

->

getmin()

) datastack.

push

(number)

;//不滿足number <= this->getmin(),就把number壓人資料棧

}//彈棧

int mystack::

pop(

)int value = datastack.

top();

datastack.

pop();

if(value ==

this

->

getmin()

)return value;

}int mystack::

getmin()

return minstack.

top();

//最小棧的棧頂元素就是最小的

}int

main()

cout << mystack.

getmin()

for (int i = 0; i < n; ++i) */

cout << endl;

return0;

}

最小棧的實現

題目 實現乙個棧,該棧帶有出棧 pop 入棧 push 取最小元素 getmin 3個方法,要保證這3個方法的時間複雜度都是o 1 解題思路 設原有的棧叫做棧a,此時建立乙個額外的 備胎 棧b,用於輔助棧a 當第乙個元素進入棧a,讓新元素也進入棧b。這個唯一的元素就是棧a的當前最小值。之後每當新元素...

最小棧的實現

coding utf 8 實現乙個棧,該棧帶有出棧 pop 入棧 push 取最小元素 getmin 3個方法。要保證這3個方法的時間複雜度都是o 1 class minstack 定義列表 def init self self.stack 入棧def push self,value 出棧 defp...

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

實現乙個最小棧,一步一步優化,從額外空間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...