代码随想录算法训练营day11| ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值
1.代码随想录算法训练营第二天| 977.有序数组的平方,209.长度最小的子数列,59.螺旋矩阵Ⅱ2.代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素3.代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表4.代码随想录算法训练营第四天| 24. 两两交换链表中的节点, 19.删除链表的倒数第N个结点,面试题02.07.链表相交,142.环形链表Ⅱ5.代码随想录算法训练营第六天| 242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数之和6.代码随想录算法训练营第7天| ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和7.代码随想录算法训练营第8天| ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串8.代码随想录算法训练营第9天| ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结 ●双指针回顾 9.代码随想录算法训练营第10天| 232.用栈实现队列 ● 225. 用队列实现栈10.代码随想录算法训练营day13| ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结
11.代码随想录算法训练营day11| ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值
12.代码随想录算法训练营day14| ● 二叉树理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代13.代码随想录算法训练营day15 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 14.代码随想录算法训练营day16 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数15.代码随想录算法训练营day17 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和 16.代码随想录day21 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先 20.有效的括号
卡哥demo
class Solution {
public:
bool isValid(string s) {
if(s.size() %2 != 0) return false;
stack<char> st;
for(int i = 0; i < s.size(); i++){
if(s[i] == '(') st.push(')');
else if(s[i] == '[') st.push(']');
else if(s[i] == '{') st.push('}');
//else if(st.top() != s[i] || st.empty()) return false; //报错,会有空栈top()的风险
else if(st.empty() || st.top() != s[i]) return false;
else st.pop();
}
if(st.empty()) return true;
else return false;
}
};
1047.删除字符串中的所有相邻重复项
mydemo--(自己思路)--failed
我的代码只能进行判断是否能全部消除完毕
class Solution {
public:
bool removeDuplicates(string s) {
if(s.size() %2 != 0) return false;
stack<char> st;
for(int i =0; i < s.size(); i++){
if(stack.empty()) stack.push(s[i]);
else if(stack.top == s[i]) stack.pop();
else stack.push(s[i])
}
if(stack.empty()) return true;
else return false;
}
};
卡哥demo1
栈,然后最后转换成string
class Solution {
public:
string removeDuplicates(string s) {
stack<char> st;
for(char ch:s){
if(st.empty() || ch != st.top()) st.push(ch);
else st.pop();
}
string result = "";
while(!st.empty()){ //只要栈不为空
result += st.top();
st.pop();
}
reverse(result.begin(), result.end());
return result;
}
};
卡哥demo2
用字符串模拟栈
class Solution {
public:
string removeDuplicates(string s) {
string result;
for(char ch : s){
if(result.empty() || result.back() != ch){ //注意顺序,否则有操作空字符串的风险
result.push_back(ch);
}
else{
result.pop_back();
}
}
return result;
}
};
150.逆波兰表达式求值
卡哥代码
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long> st; //leetcode给的数据很大,需要用longlong类型
for(int i = 0; i < tokens.size(); i++){
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){
long long num1 = st.top();
st.pop();
long long num2 = st.top();
st.pop();
if(tokens[i] == "+") st.push(num2 + num1);//运算顺序别反了,是num2在前
if(tokens[i] == "-") st.push(num2 - num1);//运算顺序别反了,是num2在前
if(tokens[i] == "*") st.push(num2 * num1);//运算顺序别反了,是num2在前
if(tokens[i] == "/") st.push(num2 / num1);//运算顺序别反了,是num2在前
}
else{
st.push(stoll(tokens[i]));
}
}
int result = st.top();
st.pop(); //释放内存是好习惯
return result;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南