#include<iostream>
#include<stack>
//成員函數不要和構造函數混淆
//函數是否有形參和函數的返回類型沒有關係
class Min{
public:
void push(int x){
data.push(x);
//爲空,輸出爲1,分清楚邏輯判斷
if(min.empty()){
min.push(x);
}else{
if (x > min.top()){
x = min.top();
}
min.push(x);
}
}
void pop(){
data.pop();
min.pop();
}
int top(){
return data.top();
}
int getMin(){
return min.top();
}
private:
std::stack<int> data;
std::stack<int> min;
};
int main(){
Min S;
S.push(2);
std::cout<<S.getMin()<<std::endl;
S.push(-1);
std::cout<<S.getMin()<<S.top()<<std::endl;
S.push(0);
std::cout<<S.getMin()<<std::endl;
return 0;
}
實現一個可以返回最小值的棧
申請一個額外的棧空間,維護最小值,和數據棧同時進行push和pop即可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.