华为OD==5.31机考一星题详细复盘

一星题共两道,难度适中,但细节比较多,很多同学容易粗心丢分,我把两道一星题详细解析给大家,希望大家都能把必拿分拿下!

一星题1:链表数字游戏

📌 核心考点:

  • 链表遍历
  • 多条件优先级判断
  • 队列/列表的顺序重组

📖 题目:

给定一个链表,每个节点包含一个整数。按顺序处理每个数字,根据以下规则决定它的去向:

  1. 如果是 3的倍数 → 直接淘汰(移除)
  2. 否则,如果数字的十进制表示中包含数字3 → 移动到队尾
  3. 否则,如果包含数字2 → 移动到队首
  4. 否则 → 位置不变

优先级说明

  • 规则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机考##机考##内推#
全部评论

相关推荐

评论
4
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务