华为OD==5.31机考一星题详细复盘
一星题共两道,难度适中,但细节比较多,很多同学容易粗心丢分,我把两道一星题详细解析给大家,希望大家都能把必拿分拿下!
一星题1:链表数字游戏
📌 核心考点:
- 链表遍历
- 多条件优先级判断
- 队列/列表的顺序重组
📖 题目:
给定一个链表,每个节点包含一个整数。按顺序处理每个数字,根据以下规则决定它的去向:
- 如果是 3的倍数 → 直接淘汰(移除)
- 否则,如果数字的十进制表示中包含数字3 → 移动到队尾
- 否则,如果包含数字2 → 移动到队首
- 否则 → 位置不变
优先级说明:
- 规则1 优先于规则2和3
- 如果同时包含数字2和3 → 按规则2处理(移队尾)
特殊返回:
如果任意数字超过 109109,直接返回 "-1"
❌ 常见错误(失分重灾区)
- 同时包含2和3时错误地移到了队首
- 在原链表上直接删除/移动,导致顺序错乱
- 遗漏数字范围检查(如0、超大数)
- 优先级判断顺序写错(比如先判断含3再判断3倍数)
✅ 避坑建议:
- 不要在原链表上操作,用多个队列/列表暂存
- 按优先级顺序依次判断:3倍数 → 含3 → 含2 → 其他
- 数字范围检查放在最前面
- 最后按:队首列表 + 不变列表 + 队尾列表 拼接输出
一星题2:企业内部门的最大层级
📌 核心考点
- 二叉树层序遍历序列的反序列化
- 二叉树深度(最大层级)计算
📖 题目:
给定一个字符串数组,按层序遍历顺序表示一棵二叉树,其中:
- 正常节点用数字字符串(如 "1")
- 空节点用 "#"
要求:
- 构建出这棵二叉树
- 返回它的最大深度(根节点深度为1)
❌ 常见错误
- 误以为输入是单个字符串
- 递归建树时索引没有全局共享,导致节点错位
- 对 "#" 的处理不完整(比如只判断 null 或空字符串)
- 深度从0开始计数,但题目要求从1开始
✅ 避坑建议
- 明确输入是字符串数组,不是逗号分隔的字符串
- 建议使用队列层序遍历建树,更安全
- 若用递归,需维护一个全局或引用的索引变量
- 遇到 "#" 直接返回空节点,不继续递归
- 深度公式:max(左子树深度, 右子树深度) + 1
我还整理了:
- 两道一星题的完整可运行代码(Java/Python)
- 多种写法对比(递归 vs 迭代)
- 易错点自测用例
👉 评论区留言“一星”或私信我,我发你完整笔记
后续也会持续更新二星题、真题合集、面试流程经验,欢迎关注。
#华为##华为OD##华为OD机考##机考##内推#
查看10道真题和解析