文章目录
- 前言
- 一、STL栈和队列的使用
- 二、leetcode---最小栈
- 三、nowcoder---栈的压入、弹出序列
- 总结
前言
C++STL的Stack的使用:STL栈和队列的使用介绍、leecode—最小栈、nowcoder—栈的压入、弹出序列等的介绍
一、STL栈和队列的使用
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
void test_stack_queue()
{
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
st.push(5);
while (!st.empty())
{
cout << st.top() << " ";
st.pop();
}
cout << endl;
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
while (!q.empty())
{
cout << q.front() << " ";
q.pop();
}
cout << endl;}
int main()
{
test_stack_queue();
return 0;
}
二、leetcode—最小栈
最小栈链接
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;
};
三、nowcoder—栈的压入、弹出序列
栈的压入、弹出序列链接
class Solution {
public:
bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
stack<int> st;
size_t pushi = 0, popi = 0;
while(pushi < pushV.size())
{
st.push(pushV[pushi++]);
// 不匹配
if(popV[popi] != st.top())
{
continue;
}
else
{
// 匹配
while(!st.empty() && st.top() == popV[popi])
{
st.pop();
++popi;
}
}
}
return st.empty();
}
};
总结
C++STL的Stack的使用:STL栈和队列的使用介绍、leecode—最小栈、nowcoder—栈的压入、弹出序列等的介绍