← 返回博客列表
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:非遞減陣列最小增量總和

題目核心

給定一個陣列(題目場景中是功率/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 高頻題庫覆蓋率極高。

立即加 WeChat:Coding0201

獲取:

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