目录
正在加载目录...

Capital One OA 真题解析|四道 Coding 题完整思路与解法

Capital One OA 真题解析|四道 Coding 题完整思路与解法

这次分享的是四道 Capital One OA 真题。考试通过 CodeSignal 平台完成,限时约 70 分钟。这次遇到的 Coding 题分别考察了基础模拟、整除匹配、曼哈顿距离枚举以及子数组配对统计,整体更偏向实现细节和对问题的直接转化能力。

下面我会把这四道题分别拆解,包括题目思路、解题方法以及具体考察的知识点,方便正在准备 Capital One OA 的同学参考。

Capital One OA Coding 题目

T1:带符号的加减判断

Capital One OA 真题解析|四道 Coding 题完整思路与解法

题目描述

给定三个等长的整数数组,以及一个只包含加号和减号的符号数组。对每个位置,按照对应符号,将第一个数组的数字与第二个数组的数字相加或相减,判断结果是否等于第三个数组对应位置的数字。相等记为真,不相等记为假,最后返回一个等长的判断结果数组。

解题方法

从头到尾遍历数组,遇到加号就把前两个数组对应位置的数字相加,遇到减号就用第一个数减去第二个数,再与第三个数组对应位置的数字比较,相等记为真,不相等记为假。把这些结果依次存入数组返回即可,只需遍历一遍,时间复杂度是 O(n)。

T2:歌曲与动画时长匹配

Capital One OA 真题解析|四道 Coding 题完整思路与解法

题目描述

歌曲和动画都用“名称:时长”表示,动画的时长不能超过歌曲时长,而且必须能整除歌曲时长,让动画完整重复若干次后,刚好与歌曲同时结束。需要为每首歌找到符合条件的动画,并给出播放次数,比如一首歌长185秒,匹配37秒的动画,就需要播放5次。

解题方法

先把歌曲和动画里的名称、时长拆开,再逐首歌曲去匹配动画。判断时用歌曲时长除以动画时长,如果能整除,就说明这个动画重复播放后能刚好覆盖整首歌,播放次数就是两者相除的结果。将选中的动画名称和播放次数按歌曲顺序存入结果数组即可。

T3:菱形区域(曼哈顿距离)

Capital One OA 真题解析|四道 Coding 题完整思路与解法

题目描述

给定一个二维矩阵和一个整数半径 r。我们定义以格子 (centerX, centerY) 为中心的“菱形区域”为:所有满足条件 abs(centerX - cellX) + abs(centerY - cellY) + 1 ≤ r 的格子 (cellX, cellY) 的集合。任务是遍历矩阵,以每一个格子作为中心,找出并收集其菱形区域内所有符合条件的格子。

解题方法

遍历矩阵中的每个格子,依次将其作为中心点。针对当前中心点,再次遍历矩阵中的所有格子,计算目标格子到中心点的曼哈顿距离并加 1。如果结果小于等于 r,就将其纳入该中心的菱形区域中。将每个中心点的收集结果整理好返回即可。这种方法逻辑直接,只需按规则逐一校验,时间复杂度是 O(n²·m²)(其中 n 和 m 分别为矩阵的行数和列数)。

T4:水果传送带上至少 k 对相同水果的连续区间

Capital One OA 真题解析|四道 Coding 题完整思路与解法

题目描述

给定一个表示传送带上水果种类的整数数组 fruits 和一个整数 k。你的任务是统计有多少个连续子数组(即传送带上的连续一段),使得在该子数组内至少能凑出 k 对相同种类的水果。

需要注意的是,配对规则如下:每对水果必须由两个相同种类的水果组成,且每个水果只能被计入一对中。例如,如果某种水果出现了 3 次,它最多只能贡献 1 对(3 // 2 = 1)。

解题方法

采用暴力枚举的方法遍历所有可能的连续子数组。

  1. 固定左端点:外层循环遍历数组,依次将每个位置作为子数组的起始点。
  2. 扩展右端点:内层循环从当前左端点向右延伸,逐步扩大子数组的范围。
  3. 统计与判断:在扩展过程中,使用哈希表(Map)实时统计当前窗口内每种水果的出现频率。对于当前的子数组,计算所有水果能组成的对数总和(即对每种水果的频率除以 2 取整后累加)。
  4. 计数:一旦这个总和达到或超过 k,说明当前子数组满足条件,将结果计数器加 1。

Capital One OA 如何准备

  1. 刷题可以先围绕这套题涉及的类型准备:T1 的模拟与条件判断、T2 的整除和取模、T3 的曼哈顿距离,以及 T4 的子数组频率统计。数组、哈希表和枚举这些基础方法要写熟。拿到题后先看数据范围,把能满足要求的解法写清楚,再考虑有没有必要继续优化。
  2. 按这套题 70 分钟的时限,前两题可以争取在 15~20 分钟内完成,给后两题留出时间。遇到暂时想不出优化方法的题,可以先写一个逻辑正确的暴力版本,跑通样例后再改。暴力能过多少测试,要看数据规模,别默认双重循环一定够用。平时也可以按这个时间限制练几次,看看自己主要在哪一步耗时。
  3. 读题时多留意“至少”“最多”“恰好”,以及是否允许重复使用元素。这些条件看漏一个,后面的代码就可能白写。提交前,按题目允许的输入范围,手动检查一下只有一个元素、所有元素相同、没有符合条件的结果等情况。涉及下标和计数时,再看一遍循环边界,尤其是最后一个位置有没有处理到。
  4. 每周有时间可以安排 2~3 次模拟测试,做完后把卡住的地方记下来:是题意理解慢,还是实现不熟,或者一直在修边界问题。看懂题解后,最好关掉答案自己重写一次。如果数组、哈希表和简单枚举还不熟,就先把这些补上,再练更复杂的子数组统计。复盘时找到反复出错的地方,下一次练习才知道该补什么。

总结

这四道 Capital One OA 题整体难度不算高,核心都是「看懂题意 → 直接实现」。准备时重点练实现类题目,控制好每题时间,前两题尽量快速拿下。按这个方向准备,Capital One OA 通过概率会高很多。

如果你正在准备 Capital One OA,除了刷题,也可以结合真实面经熟悉常见题型和解题思路。InterviewShow 提供 Capital One、Amazon、Google、Meta、TikTok 等科技公司的SDE 面试资料与一对一面试辅导,帮助你针对Coding、System Design 和 Behavioral Interview 进行系统准备。

想获取更多 Capital One 及相关公司的面试支持,欢迎随时联系 InterviewShow。

Capital One OA FAQ

Capital One OA 难吗?

Capital One OA 的题目通常比较注重基础 Coding 和实际实现能力。常见考察包括数组、字符串、Hash Map、数学运算、模拟、子数组统计等。相比复杂算法,更需要注意题意理解、边界条件和代码正确性。

Capital One OA 一般考什么?

Capital One OA 主要以 Coding 为主,具体题型会根据岗位和批次有所变化。常见方向包括数组遍历、频率统计、字符串处理、数学判断、区间或子数组问题等。

Capital One OA 需要刷很多 LeetCode 吗?

不一定需要大量刷题。准备 Capital One OA 时,可以优先掌握 Array、Hash Map、String、Two Pointers、Sorting、Prefix Sum 等基础题型,同时练习在有限时间内快速理解题意并完成实现。

参考链接

END