1. 米哈游笔试真题解析:从展墙配对到树上异或
最近帮几位同学复盘了米哈游2026年春招的笔试题目,这套题目前两题属于典型的需要"透过现象看本质"的类型,而第三题则是考察对树结构的深刻理解。作为算法面试老司机,我把解题思路和避坑要点整理出来,希望能帮到正在准备游戏公司技术岗的朋友们。
这套题有三个显著特点:1) 题干包装性强,需要快速抽象出数学模型;2) 对基础算法的变形应用要求高;3) 第三题需要掌握树问题的经典处理技巧。下面我们逐题拆解,我会重点讲如何识别题目本质,以及面试官可能埋的雷点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目一:展墙与橱窗的配对问题
2.1 问题本质还原
题干描述的是展览馆布置场景:有m行n列的展区,每个格子有若干展品。若某行所有展品总数等于某列所有展品总数,则这对行列可以组成合法配对。要求统计所有可能的配对数量。
剥开场景包装,这实际上是个二维数组的行列和匹配问题。关键洞察点是:配对只与行列和的数值有关,与具体分布无关。这提示我们应该:
- 计算所有行的和(row_sums)和所有列的和(col_sums)
- 统计每个和值出现的频率
- 对每个出现的和值,累加row_sums和col_sums中该值出现次数的乘积
2.2 具体实现方案
以Python为例,标准解法如下:
python复制def count_pairs(grid):
m, n = len(grid), len(grid[0])
row_sums = [sum(row) for row in grid]
col_sums = [sum(grid[i][j] for i in range(m)) for j in range(n)]
from collections import defaultdict
row_count = defaultdict(int)
col_count = defaultdict(int)
for s in row_sums:
row_count[s] += 1
for s in col_sums:
col_count[s] += 1
total = 0
for s in row_
