![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客 AB
刷题心得
郑师傅炒板栗
老师不是说你啊
展开
-
AB5 点击消除
AB5 点击消除关键思路:如何消除 + 栈// 结合AB 3的有效括号序列,消除的思想#include <bits/stdc++.h>using namespace std;// 辅助栈stack<char> stk;string str;int main() { cin >> str; int lenStr = str.size(); stk.push(str[0]); // 先把第一个字符压入栈中原创 2022-04-04 23:40:15 · 391 阅读 · 0 评论 -
AB4 逆波兰表达式求值
AB4 逆波兰表达式求值关键思路:栈,遇到数字压入栈中,遇到运算符,就弹出栈顶两个元素计算,计算后再压入栈中先判断的是否是运算符,遇到好多坑点,注意一下;还有就是,这里有负数,所以我们用stoi这个函数来转换成数字,减少一部分麻烦;class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串vector原创 2022-04-04 23:10:25 · 240 阅读 · 0 评论 -
AB3 有效括号序列
AB3 有效括号序列关键思路:辅助栈,匹配则消掉;代码中详细解释class Solution {public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here // 辅助栈 stack<char> stk; // 用来存储“左” ( { [原创 2022-04-04 21:53:59 · 400 阅读 · 0 评论 -
AB2 栈的压入、弹出序列
AB2 栈的压入、弹出序列关键思路:辅助栈模拟,具体思路模拟在代码中;class Solution {public: // 解题思路:利用一个辅助栈来模拟 // 1. 栈是先入后出结构 // 2. 本题判断这个弹出序列是否可行,那么要想能弹出就得先入栈 // 3. 那么我们就用两个指针分别指向这两个序列,i指针指向pushV,j指针指向popV // - 首先若当前两个指针指向的元素相等,说明这个元素是放入栈后立马弹出的,就得++i, ++j一起移原创 2022-04-04 19:18:47 · 223 阅读 · 0 评论 -
AB7 【模板】队列
AB7 【模板】队列hh : 队头(初始化0),tt : 队尾(初始化 -1);一旦hh > tt 即代表队列为空#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int que[N];int hh; //队头0int tt = -1; //队尾-1// 当 hh > tt时,即队列为空string op; //操作的名称// 队列是先进先出的,从队尾进入,从队头出去vo原创 2022-04-04 15:12:15 · 244 阅读 · 0 评论 -
AB1 【模板】栈
AB1 【模板】栈tt == 0 代表栈是空的(判断栈空方便),tt 为指向栈顶的“指针”;push x, 往栈顶插入x;pop 栈不空就可以弹出,弹出的时候,还要输出该数;top 栈不空就可以获得栈顶元素,记得输出该数;#include <bits/stdc++.h>using namespace std;// 模拟栈,0就代表栈空const int N = 1e6 + 10;int stk[N];int tt;void pushOP(int k) { st原创 2022-04-04 14:16:54 · 230 阅读 · 0 评论