Google OA LeetCode 的实战体验来了!2026年6月最新放出的两道OA题,亲测25分钟全AC。难度不算逆天,但典型的暴力会挂,优化才稳,两题都是LeetCode medium高频变种,来复盘一下真题和思路参考,帮你把通过率拉满。

Google OA 结构
两道算法题,限时约70分钟,平台是 HackerRank。Google OA 特别爱考边界 case,空矩阵、单元素数组、全正全负数组这类边界处理是扣分的高发地,写完主逻辑之后一定要自己跑一遍边界验证。
题目 1:Count Comparisons
题意:给定一个 N 行 D 列的二维矩阵 M,你需要两两比较所有行,统计判断两行是否相等过程中总共执行的元素比较次数。比较规则是从左到右逐位对比,直到找到不同元素或比较完所有 D 个元素。
解题思路:如果暴力两两比较所有行对,时间复杂度是 O(N² × D),很容易超时。优化方法是先对矩阵的所有行进行排序(把每行当作元组排序),然后按列分组统计不同行对在每一列的比较次数,最后再加上完全相同行对的比较次数(每次都是 D 次)。核心在于排序 + 分组统计,避免了暴力两两对比,效率大幅提升。
题目 2:Reversed Subarray Sum
题意:给定长度为 N 的数组 A,你必须恰好执行一次反转某个子数组 [l, r] 的操作。求操作后能得到的最大子数组和。
解题思路:反转后最大子数组和有两种情况:一种是不受反转影响的原始最大子数组和,另一种是反转某个区间 [l, r] 后,连接前缀最大子数组和(到 i 结束)与后缀最大子数组和(从 j 开始),其中 i < j。
我提前预处理了两个数组:prefix_max[i] 表示从开头到 i 结束的最大子数组和,suffix_max[j] 表示从 j 到结尾开始的最大子数组和。然后枚举所有可能的 i < j,计算 prefix_max[i] + suffix_max[j] 的最大值,最后再和原始的最大子数组和比较取最大值。核心是前缀 / 后缀最大子数组和预处理 + 枚举连接点。
备战心得
Google OA 的题目设计有一个规律:暴力解法通常能想到,但复杂度一定会超时,真正的考点是你能不能在暴力基础上找到优化点。第一题的排序+分组替代暴力两两对比,第二题的前缀/后缀预处理替代枚举反转区间,都是这个思路。
遇到 Google OA 先别急着写代码,花3-5分钟把时间复杂度估一遍,如果 O(N²) 级别先想有没有排序、哈希或者预处理能降维。OA 前找了 interviewshow 做辅助,Google OA 这类优化题如果现场第一次遇到容易卡在暴力能过但超时这个阶段出不来。有需要 OA 辅助的可以联系。