- 0、前言
- 1、题目描述
- 2、解题思路
- 2.1 方法1 ~ 利用stack
- 2.1.1 思路
- 2.1.2 程序代码
- 2.2 方法2 ~ 利用vector
- 2.2.1 思路
- 2.1.2 程序代码
本篇博客是力扣上 155. 最小栈 题的题解,挺简单的,就是想写个博客!
GitHub上相关内容可 点击此处 进行查看!
1、题目描述 2、解题思路 2.1 方法1 ~ 利用stack 2.1.1 思路此处就是利用两个栈去实现问题目标,有点像利用栈实现队列的感觉。具体可直接看下述代码!
2.1.2 程序代码class MinStack {
public:
MinStack() {
}
void push(int val) {
tmp.push(val);
if(res.empty() || res.top() >= val)
res.push(val);
}
void pop() {
if(res.top() == tmp.top())
res.pop();
tmp.pop();
}
int top() {
return tmp.top();
}
int getMin() {
return res.top();
}
private:
stack tmp;
stack res;
};
2.2 方法2 ~ 利用vector
2.2.1 思路
此处思路就是将所有数据存入数组中,然后当输出最小值时对数组内数据进行遍历找出目标数据即可!
2.1.2 程序代码class MinStack {
public:
MinStack() {
}
void push(int val) {
_data.push_back(val);
}
void pop() {
if(!_data.empty())
_data.pop_back();
}
int top() {
return _data[_data.size()-1];
}
int getMin() {
int minnum = INT_MAX;
for(int& d:_data)
minnum = min(minnum,d);
return minnum;
}
private:
vector _data;
};



