DS博客作业02--栈和队列
0.PTA得分截图
栈和队列题目集总得分,请截图,截图中必须有自己名字。题目至少完成2/3(不包括选择题),否则本次作业最高分5分。
1.本周学习总结(0-5分)
1.1 栈
画一个栈的图形,介绍如下内容。
顺序栈的结构、操作函数
链栈的结构、操作函数
1.2 栈的应用
表达式
中缀表达式转后缀表达式
后缀表达式求值
1.3 队列
画一个队列的图形,介绍如下内容。
顺序队列的结构、操作函数
环形队列的结构、操作函数
链队列的结构、操作函数
队列应用,要有具体代码操作。
2.PTA实验作业(4分)
此处请放置下面2题代码所在码云地址(markdown插入代码所在的链接)。如何上传VS代码到码云
2.1 符号配对
2.1.1 解题思路及伪代码
思路: 如果当前的符号是前一半,那么推入栈,如果是后一半就找最近的匹配括号,如果是就推出,遍历下一个,如果不匹配那么久失败退出
2.1.2 总结解题所用的知识点
2.2 银行业务队列简单模拟
2.2.1 解题思路及伪代码
将输入的人数N使用求余运算进行奇偶入队,在两队不为空的情况下,利用标志变量对2进行求余运算
由于A队的业务处理速度是B队的两倍,所以,标志变量每轮递增,A队每轮循环都出队,B队只有当余数为0的时候出队,出队
后重新将标志变量记为0。循环结束后,判断两队是否均为空,如果不为空,则将剩余队员出列。
2.2.2 总结解题所用的知识点
对于出队速度的控制,可以使用
3.阅读代码(0--1分)
3.1 题目及解题代码
可截图,或复制代码,需要用代码符号渲染。
`
class Solution2 {
public:
vector
// <数值,频率>
unordered_map<int, int> freq;
for (int i = 0; i < nums.size(); i++) {
freq[nums[i]]++;
}
// 开始维护K长的优先队列,pair<频率,数值>
priority_queue< pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>> > pq;
for (unordered_map<int, int>::iterator iter = freq.begin(); iter != freq.end(); iter++) {
// 队列长度已到达k
if (pq.size() == k) {
if (iter->second > pq.top().first) {
pq.pop();
pq.push(make_pair(iter->second, iter->first));
}
}
else {
pq.push(make_pair(iter->second, iter->first));
}
}
// 整理输出
vector<int> res;
while (!pq.empty()) {
res.push_back(pq.top().second);
pq.pop();
}
return res;
}
};`
3.2 该题的设计思路及伪代码
思路: 维护一个k数据长的优先队列,如果后来的数据的频率高于优先队列中的最小频率,那么替换,最终的优先队列中的数值就是我们的结果,复杂度为o(nlogk)
3.3 分析该题目解题优势及难点。
keep it up
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人