华为OD机考365.83分复盘——真题考点+解题思路
上周我小组有个候选人机考刚出分我就让他复盘了一下
背景:总分365.834/400,排名前22%。
第一题全过,后两题部分通过。我整理了三题的考点与思路,供参考。
一星题1:循环内存存取计算(82.5分)
考点:
环形缓冲区、内存对齐、区间重叠判断
思路:
- 将写指针对齐到align的整数倍(注意可能绕回0)
- 计算写入后的结束位置
- 判断是否会覆盖未读数据区间(read_index ~ write_index)
- 若能放下则返回新写指针,否则返回-1
注意点:
- 对齐后若等于capacity,需绕回0
- write_index == read_index 时缓冲区为空,可写入
- 绕回写入时,需检查两段是否与未读区间重叠
一星题2:美观的灯笼(100分)
考点:
最长连续非递增子数组、一次遍历
思路:
- 遍历数组,若当前灯笼尺寸 ≤ 上一个,长度加1;否则重置长度。
- 同时记录最大长度和起始索引,最后返回[最大长度, 起始索引]
二星题:水站孤立站判定(183.33分)
考点:
图论、多源BFS、有向与无向混合图
思路:
- 建图:单向管道加一条边,双向加两条
- 将所有源头站加入队列,BFS标记可到达的站点
- 未被标记的即为孤立站,按升序输出
注意点:
- 双向管道需添加反向边
- pipes为二维数组,注意索引
- BFS使用visited数组避免重复
刷题建议:
- 一星题:重点练习字符串、数组、模拟、贪心
- 二星题:重点练习动态规划、图论(BFS/DFS/拓扑排序)
整体来看,这套题目不算偏,策略拿分比全做对更重要。有问题欢迎留言交流。
#程序员##内推##机考##华为OD##华为#
查看10道真题和解析