代码随想录打卡第11天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347. 前K个高频元素

150. 逆波兰表达式求值 链接:150. 逆波兰表达式求值 文章:代码随想录 视频:B站讲解 状态:⚠️ 第一想法 逆波兰表达式 逆波兰表达式: 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。 平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。 该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。 逆波兰表达式主要有以下两个优点: 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中 看完题解后的想法 —— 实现中遇到的困难 注意第一次出栈的是右操作数,第二次出栈的是左操作数; 代码 class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; for (string& t : tokens) { if (t == "+" || t == "-" || t == "*" || t == "/") { int a = st.top(); st.pop(); int b = st.top(); st.pop(); if (t == "+") { st.push(b + a); } else if (t == "-") { st.push(b - a); } else if (t == "*") { st.push(b * a); } else { st.push(b / a); } } else { st.push(stoll(t)); } } return st.top(); } }; 239. 滑动窗口最大值 链接:239. 滑动窗口最大值 文章:代码随想录 视频:B站讲解 状态:⚠️ 第一想法 老员工比新员工菜就优化,老员工大于35也优化 ...

March 14, 2026 · KahanaT800

代码随想录打卡第10天 | 232. 用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

232. 用栈实现队列 链接:232. 用栈实现队列 文章:代码随想录 视频:B站讲解 状态:✅ 第一想法 一个栈 s1 用来入队,一个栈 s2 用来出队; 看完题解后的想法 最开始每次把数据从 s1 倒入 s2 还要把 s2 中的数据倒回去,为了保持顺序一致; 但是其实可以做一个简化,只有s2中空了才从s1中补充,这样其实是分段连续的; 实现中遇到的困难 —— 代码 class MyQueue { public: MyQueue() { } void push(int x) { s1.push(x); } int pop() { transfer(); int res = s2.top(); s2.pop(); return res; } int peek() { transfer(); int res = s2.top(); return res; } bool empty() { return s1.empty() && s2.empty(); } private: stack<int> s1; stack<int> s2; void transfer() { if (s2.empty()) { while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } } } }; 225. 用队列实现栈 链接:225. 用队列实现栈 文章:代码随想录 视频:B站讲解 状态:✅ 第一想法 刚开始用两个queue互相捣腾数据; ...

March 13, 2026 · KahanaT800