最小棧的實現:
定義兩個棧,乙個資料棧,乙個最小棧;
如果最小棧為空就直接把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()
*cout << "每次獲得的最小值:" << endl;
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...