← 返回博客列表
Amazon

Amazon OA 两题全AC复盘:循环购物模拟 + 非递减数组最小增量

2026-03-20

HackerRank 平台又一场 Amazon OA,做的不少了,场场AC,十来分钟搞定。两道题方向很经典——一道批量模拟,一道线性扫描贪心。以下是纯思路复盘,不含代码。

Amazon OA HackerRank 题目截图


考试概况

项目 详情
平台 HackerRank
题数 2 道
难度 Medium
岗位 Intern / New Grad SDE
结果 全AC,约 10 分钟

T1:循环购物模拟(Shopping with Price Doubling)

Amazon OA T1 循环购物题目

题目核心

有若干商品,初始各有一个价格。你有一定初始余额,循环购买

解题思路

暴力做法:一件一件模拟,每次找最便宜的买,复杂度 O(m·n),m 为总购买件数。价格指数级增长,实际 m 不大,但题目数据量大时仍可能超时。

正确思路:批量整除模拟

关键观察:在同一「轮」里,所有商品的价格是固定的(还没翻倍),可以一次性算出这轮能买多少件

具体流程:

  1. 计算当前所有可买商品(即价格 ≤ 余额)的价格总和 total_price
  2. 用余额整除总价:rounds = balance // total_price,这一轮能完整购买 rounds
  3. 更新余额:balance -= rounds * total_price
  4. 更新计数:count += rounds * 可买商品数
  5. 每轮后,所有商品价格翻倍,剔除涨价后买不起的商品
  6. 重复,直到没有可买商品或余额不足

为什么这样更快?

每一轮至少有一种商品因价格翻倍而被剔除,所以最多执行 O(n log(balance)) 轮,远小于逐件模拟。

复杂度分析

关键洞察

价格翻倍意味着每种商品能买的总次数是有限的(对数级别),整体计算量远小于直觉。批量整除是把「逐步模拟」压缩成「批量跳跃」的核心技巧。


T2:非递减数组最小增量总和(Min Increment to Non-Decreasing)

题目核心

给定一个数组(题目场景中是功率/power 数组),你可以选择任意连续子数组,对其所有元素加上同一个值。目标是让整个数组变成非递减序列,求所需的最小增量总和

解题思路

乍看像 DP,其实有一个非常优雅的贪心结论:

扫描数组,对所有相邻的「降序对」,累加其差值。

即:遍历数组,凡是遇到 power[i] > power[i+1] 的位置,把 power[i] - power[i+1] 加入答案。

为什么这是最优解?

每当出现下降,后面的元素必须被「抬高」才能满足非递减。最省增量的策略是:把后面的元素恰好抬到前面的高度,不多不少。连续操作可以合并,但最终每一个降序差都必须被补偿,总增量恰好等于所有降序差的累加和。

复杂度分析

关键洞察

不需要真正模拟「选子数组加值」的过程。答案就是所有相邻降序差的总和——这个结论来自于贪心的局部最优等于全局最优:每个降都必须被补,每个升不需要动。


两题核心思路对比

题目 核心技巧 时间复杂度 空间复杂度
T1 循环购物 批量整除模拟 + 剔除涨价商品 O(n² log B) O(n)
T2 非递减增量 线性扫描累加降序差 O(n) O(1)

常见思维误区

题目 误区 正确方向
T1 逐件模拟,每次找最便宜的买 批量整除,一次处理多轮
T1 忽略涨价后的剔除步骤 每轮后必须剔除买不起的商品
T2 用 DP 枚举子数组操作 贪心:答案就是所有降序差之和
T2 以为需要模拟「加值」操作 一次线性扫描,O(n) 直接得出答案

Amazon HackerRank OA 应试策略

Amazon OA 特点

临场策略

  1. T1 类循环模拟:看到「每次操作后状态变化」,先想能否批量跳跃而不是逐步模拟
  2. T2 类数组调整:看到「最小操作使数组满足性质」,先试贪心,从局部最优推全局最优
  3. 先在草稿纸上过一遍小例子,确认逻辑再写代码
  4. HackerRank 测试用例边界较严,注意 balance = 0单元素数组 等边界
  5. 写完跑样例再提交

相关 LeetCode 练习

题号 题目 对应 Amazon OA 考点
1648 Sell Diminishing-Valued Colored Balls T1 批量模拟思维
2141 Maximum Running Time of N Computers T1 整除跳跃
665 Non-decreasing Array T2 非递减判断
1827 Minimum Operations to Make Array Increasing T2 最小增量

🚀 需要 Amazon OA 辅助?

oavoservice 专注北美大厂 OA/VO 全程辅助,Amazon OA 是我们的核心服务场景,HackerRank 和 CodeSignal 高频题库覆盖率极高。

立即添加微信:Coding0201

获取:

📱 微信:Coding0201 | 💬 Telegram:@OAVOProxy | 📧 [email protected]