华为海思图灵 10.16 笔试:股票变种、二叉树变种与岛屿题
- 轮次
- 笔试
- 结果
- 已挂
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 第一题(150 分):股票题目的变种,题目条件比较绕。
- 第二题(150 分):二叉树的变种,需要在 ACM 模式下自行构造二叉树。
- 第三题(300 分):岛屿类题目,题干很长。
《参考解析》
这场笔试的结构与真实难点
三道题按 150 / 150 / 300 计分,限时两小时。帖主的复盘里有两点信息值得记下来:一是华为用的是自研题(不是 LeetCode 原题换皮),所以「刷过这道题」的运气成分小、靠模板变形能力;二是失分点不在算法本身——第一题和第三题都是「看半天没看懂题意」,第二题算法会做却卡在「忘了怎么在 ACM 模式下手写构造二叉树」。这恰恰是校招机考最常见的两个坑:读题(输入输出的形式与数据规模)和工程化输入(从 stdin 读数据、自己建结构),而不是算法思想。
股票题变种:先把状态定义清楚再套模板
股票系列的核心是状态机 DP:dp[i][k][0/1] 表示第 i 天、最多交易 k 次、当前是否持仓时的最大收益,转移只有「买、卖、不动」三条,边界是持有前 k=0 时收益不可达。变种题通常改的是这三处:交易次数限制(不限次、恰好 k 次、最多 k 次)、是否含手续费或冷冻期、以及允不允许当天买卖。遇到题干绕的情况,先把它翻译成「有几种状态、每次操作合法条件是什么」,再套模板,比硬记某一题的代码可靠;如果条件复杂到写不出状态转移,退一步用「枚举分割点 + 前后缀收益」这类暴力思路拿部分分,往往比空着强。
ACM 模式下的二叉树:重建与遍历都要自己写
LeetCode 给的是 TreeNode*,机考给的是文本。要先确认输入格式:常见有两种——前序/层序数组带空节点标记(null、# 或 -1),或者给中序加前序/后序两组序列要求重建。带标记的层序数组用队列逐个建节点即可;两序列重建则靠「前序定根、中序切左右子树」递归(或迭代 + 栈)。写的时候把三件事分开:读入并切分 token、建树、按题目要求做遍历或统计,别混在一个循环里。另外别忘了自己写递归遍历时考虑空树、单节点、以及输出格式(是打印值还是返回修改后的根)。
岛屿题:题干长不等于难,先抽骨架
岛屿类题目的本质是网格上的连通块处理,模板固定:遍历每个格子,遇到陆地就计数加一,同时用 DFS/BFS 把整块陆地「淹掉」(标记为已访问/水),避免重复计数;体量更大或需要动态连通性时改用并查集。变种一般是在三处做文章:连通性定义(四连通或八连通)、是否允许一次填海(把某些 0 变成 1 后最大岛屿)、以及是否统计周长/面积/封闭区域。题干长通常是加了业务背景和输入约束,正确读法是先抽出「网格多大、0 和 1 代表什么、要求输出什么数字或坐标」,把约束抄在草稿上再动手。
复盘:别把希望押在传闻和技巧上
帖主提到听说「150 分就能过」、而且可以直接输出几个测试用例结果骗点分——这类说法只能当参考:机考通常按通过用例比例给分,交硬编码用例确实偶尔能捞一点分,但它不能替代把题看懂的准备,更不该成为策略(一旦题目给的是多组输入或隐藏用例,这一点分也没有)。真正可控的是提前把 ACM 模式的读入模板、常用数据结构的建法(树、图、链表、矩阵)练到不用想,以及按公司常考的题库方向做题。另外华为的开奖节奏本身就慢(帖主了解到要等到 11、12 月,海思方向还要泡池子),笔试到 offer 之间时间跨度大,笔试没发挥好也别立刻放弃后续机会。