编程题分类——队列栈
目录
- 前言
- 正文
- 1. 两个栈实现一个队列
- 2. [有效的括号](/)
- 参考
前言
正文
1. 两个栈实现一个队列
code
class Solution
{public:void push(int node) {stack1.push(node);}int pop() {if(stack2.size()!=0){int tmp = stack2.front();stack2.pop();return tmp;}else{//若栈二为空了,我们就要把栈一的值全都放在栈二中去while(stack1.size()!=0){int tmp = stack1.top();stack1.pop();stack2.push(tmp);}return pop();}}private:stack<int> stack1;stack<int> stack2;};
2. 有效的括号
题目
code
class Solution {
public:bool isValid(string s) {//基本思想就是用栈的形式,这种属于鸡蛋里挑骨头。就直接返回即可。if(s.size()==0)return false;stack<char> st;char str;bool flag = true;for(int i = 0;i<s.size();i++){if(s[i]=='('||s[i]=='{'||s[i]=='['){st.push(s[i]);}else if(!st.empty()){str = st.top();if(s[i]==')'){if(str!='(')return false;}else if(s[i]==']'){if(str!='[')return false;}else if(s[i]=='}'){if(str!='{')return false;}st.pop();}else{return false;//error3:防止有元素不满足入栈的条件,也没有做处理}}if(!st.empty())//error2:注意细节flag = false;return flag;}
};
参考
- 剑指Offer
- Leetcode 100题
编程题分类——队列栈
目录
- 前言
- 正文
- 1. 两个栈实现一个队列
- 2. [有效的括号](/)
- 参考
前言
正文
1. 两个栈实现一个队列
code
class Solution
{public:void push(int node) {stack1.push(node);}int pop() {if(stack2.size()!=0){int tmp = stack2.front();stack2.pop();return tmp;}else{//若栈二为空了,我们就要把栈一的值全都放在栈二中去while(stack1.size()!=0){int tmp = stack1.top();stack1.pop();stack2.push(tmp);}return pop();}}private:stack<int> stack1;stack<int> stack2;};
2. 有效的括号
题目
code
class Solution {
public:bool isValid(string s) {//基本思想就是用栈的形式,这种属于鸡蛋里挑骨头。就直接返回即可。if(s.size()==0)return false;stack<char> st;char str;bool flag = true;for(int i = 0;i<s.size();i++){if(s[i]=='('||s[i]=='{'||s[i]=='['){st.push(s[i]);}else if(!st.empty()){str = st.top();if(s[i]==')'){if(str!='(')return false;}else if(s[i]==']'){if(str!='[')return false;}else if(s[i]=='}'){if(str!='{')return false;}st.pop();}else{return false;//error3:防止有元素不满足入栈的条件,也没有做处理}}if(!st.empty())//error2:注意细节flag = false;return flag;}
};
参考
- 剑指Offer
- Leetcode 100题