最近刚做完 Adobe SDE OA (HackerRank),说实话:题库重复率不低,刷到同一套的概率很大。这场 OA 一共 3 道 Coding,其中 1 道固定 Python。如果你正在准备 Adobe,这套一定要存。
OA 基本信息
- 平台:HackerRank
- 题量:3 道 Coding
- 语言:其中 1 题 必须 Python
- 难度:中等,但很容易在细节翻车
T1|最小绝对差数对(高频)
题意
给定一个无重复整数数组,找出所有绝对差最小的数对。要求每个数对内部升序排列,最终结果按第一个元素升序输出。
思路
先对数组排序,最小差值只可能出现在相邻元素。然后线性遍历排序后的数组:遇到更小差值就清空结果并更新最小差值,遇到相同差值就直接加入结果。
易踩点
要注意在更新最小差值时及时清空旧结果,同时输出顺序要按照要求处理,否则容易出错。
T2|温度操作冲最大值
题意
给定起始温度 x、目标温度 y,以及最多 z 次操作(每次可以 +1 或 -1),要求在最终到达 y 的前提下,过程中能够达到的最大温度。如果无法到达 y,直接返回 -1。
解题关键
思路其实很直接,主要三步:
- 可不可达判断:如果 z 小于 |x – y|,说明操作次数不够,直接返回 -1。
- 奇偶性判断:操作步数与距离的奇偶性必须一致,否则实际可用步数 K = z – 1;一致则 K = z。
- 冲高策略:先尽可能往上冲,再掉头回到 y,最大温度可直接计算为 (x + y + K) / 2。
这道题挂的人很多,不是不会做,而是没注意到奇偶性,或者把策略想得太复杂。
T3|长度为 k 的不同子串
题意
给定一个字符串 password 和整数 k,统计所有长度为 k 的不同子串数量。
思路
Python 中可以直接用 set 实现:从索引 0 遍历到 len(password) - k,每次切出长度为 k 的子串并加入 set,最后返回 len(set) 即可。边界情况需要考虑 len(password) < k,此时返回 0。
为什么刷题也容易挂?
很多同学在刷题阶段其实已经具备能力,但在正式 OA 中因为紧张、节奏被打乱而失误。
不少同学在 关键 OA 场 会选择 Programhelp 的 OA无痕助攻 :如果你正在准备 Adobe、Google、Amazon 等公司的 OA,尤其是时间紧、题量集中的场次,可以联系我们。