1)题目
带最小值操作的栈
要求:
实现一个栈, 支持以下操作:
push(val) 将 val 压入栈
pop() 将栈顶元素弹出, 并返回这个弹出的元素
min() 返回栈中元素的最小值
要求 O(1) 开销.
样例
输入:
push(1)
min()
push(2)
min()
push(3)
min()
输出:
1
1
1
2)思路
用vector实现操作
3)代码
//头文件
#pragma once
#include <iostream>
using namespace std;
#include <stack>
class MinStack
{
private:
vector<int> sta;
public:
void push(int number)
{
sta.push_back(number);
}
int pop()
{
int value=sta[sta.size()-1];
sta.pop_back();
return value;
}
int min()
{
int min= sta.front();
for(int i=1;i<sta.size();i++)
{
int num = sta[i];
if (num <= min)
min = num;
}
return min;
}
};
/*主函数*/
#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include "12.h"
int main()
{
class MinStack stack_test;
stack_test.push(3);
stack_test.push(2);
stack_test.push(1);
cout << stack_test.min() << endl;
cout << stack_test.pop() << endl;
cout << stack_test.min() << endl;
cout << stack_test.pop() << endl;
cout << stack_test.min() << endl;
}