作者:小卢
专栏:《Leetcode》
喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》
155. 最小栈
155. 最小栈
题目描述;
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例:
思路:
利用俩个栈,一个用了正常存储,一个用了存储最小值,遍历正常的栈,如果_st的top小于等于_minst的top,就将这个栈压进去,出栈的话也是类似
代码:
class MinStack {
public:MinStack() {}void push(int val) {_st.push(val);if(_minst.empty()||val<=_minst.top()){_minst.push(val);}}void pop() {if(_minst.top()==_st.top()){_minst.pop();}_st.pop();}int top() {
return _st.top();}int getMin() {
return _minst.top();}private:stack<int>_st;stack<int>_minst;
};
JZ31 栈的压入、弹出序列
栈的压入、弹出序列_牛客题霸_牛客网
题目描述:
示例:
代码:
class Solution {
public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {stack<int>st;int pushi=0;int popi=0;while(pushi<pushV.size()){st.push(pushV[pushi++]);while(!st.empty()&&st.top()==popV[popi]){st.pop();popi++;} }return popi==popV.size();}
};