剛剛做完今天的最新 Amazon OA ,特來地裡回報社會。這套題體感難度不大,全程 70 分鐘,但我大概 13-15 分鐘就寫完提交了。只要細心一點不寫出 bug,基本都能 AC。希望能幫到正在申請 Amazon NG 崗位的同學,大家加油!
Amazon OA 整體難度 & 心得
- 平臺:HackerRank
- 題量:2 程式設計題
- 總時長:70 分鐘
- 我的用時:13 分鐘(T1 8 分鐘 + T2 5 分鐘)
- 難度判斷:Easy-Medium,比一畝三分地上大家傳的舊版 OA 簡單很多
- 考點方向:Interval merge、greedy、sliding window、modulo 分配
Amazon 現在 NG OA 的風格更偏 “你能不能寫對基礎程式碼、處理好邊界”,不是那種卡你心態的 tricky 高頻題。
T1 — Interval Connectivity Reduction
給你一組數軸上的區間,允許新增一個長度不超過 k 的新區間。目標是讓新增後所有區間的連通塊數量最少,返回這個最小數量。兩個區間重疊或端點接觸就算連通。
解題思路其實核心就是 “合併區間 + 滑動視窗” 這兩個步驟。首先得把給的所有區間按左端點排好序,然後遍歷一遍,把重疊或者碰到的區間合併成一個個不相連的 “連通塊”。比如原來有幾個重疊的區間,合併後就變成一個大的連通塊了,這樣後續就只需要關注這些連通塊之間的空隙。
接下來要算這些連通塊之間的空隙長度,比如合併後有塊 1 [start1, end1]、塊 2 [start2, end2],那它們之間的空隙就是 start2 減去 end1。我們的目標是加一個長度不超過 k 的新區間,儘量多覆蓋這些空隙 —— 每覆蓋一個空隙,連通塊的數量就會少一個。這時候就用滑動視窗的思路,維護一個視窗,算視窗裡連續空隙的總長度,只要總長度不超過 k,就說明這些空隙能被一個新區間填滿。最後用初始的連通塊數量,減去視窗能覆蓋的最大空隙數量,就是最小可能的連通塊數了。
常见容易出错的地方:一是合并区间前忘了按左端点排序,导致合并出错;二是算空隙的时候把 start [i+1] 和 end [i] 写反了;三是滑动窗口的左指针没正确推进,搞出死循环;四是判断覆盖长度的时候,漏了 “等于 k” 的情况。
T2 — Maximizing Distinct Hash Values
給你一個整數陣列 param,你可以选一个等长的非负整数数组 secretKey。定義 hash[i] = secretKey[i] % param[i],要让 hash 陣列裡不同值的數量最多,返回這個最大數量。
这道题用贪心算法就能解决,关键是要先给 param 数组排序。核心思路是尽量生成 0、1、2 这样连续的小哈希值,因为模运算的结果肯定比模数本身小。
具體做法是:先把 param 陣列從小到大排好序,然後維護一個變數 current_val,一開始是 0,代表我們當前想湊出來的雜湊值。接著遍歷排序後的 param 陣列:如果 current_val 比當前的 param [i] 小,那我們就能選一個合適的 secretKey,讓它對 param [i] 取模等於 current_val,這時候就把 current_val 加 1,繼續看下一個;如果 current_val 大於等於 param [i],說明這個 param [i] 太小了,沒法生成這麼大的餘數,只能跳過。最後 current_val 的值,就是最多能得到的不同雜湊值個數。
常见容易出错的地方:一是没给 param 数组排序,贪心逻辑就没法生效;二是没考虑到 param [i] 等于 1 的时候,取模只能得到 0,没法生成其他值;三是 current_val 的增长逻辑写错了;四是把 “最大不同哈希值个数” 误解成了 param 数组去重后的元素个数。
這套題雖然不難,但對於沒刷過類似 Interval 或 Constructive Greedy 題目的同學,要在 70 分鐘內寫完且 Debug 成功,壓力還是不小的。如果你對 OA 還是沒底,或者馬上要接 HackerRank 的連結了不敢點,看下面
Final 季救命稻草!CS 作業/Project 搞不定?找 Programhelp
想要在激烈的求職季中彎道超車?Programhelp 為你提供從OA到 Offer 的全流程硬核助攻。
針對 OA ,我們採用 ToDesk 遠端無痕操作,支援 HackerRank、Codesignal 等全平臺,承諾 100% 透過率,安全且隱蔽,不過不收費。
在 VO環節,我們提供靈活的解決方案:既有北美 CS 專家透過自研無痕文件提供實時思路提示(涵蓋 Code、BQ、System Design),助你對答如流;也有基於攝像頭與變聲技術的代面試服務,支援“對口型”或“全替”模式,完美解決怯場難題。
更有 全套包 Offer 套餐,承包從 OA、面試到薪資談判的所有環節,一站式服務直到你拿到滿意的 Offer。把專業的事交給我們,你只需準備入職!
NG 的求職真的很殘酷,大家都在搶同一批機會。
但這一屆的競爭不是比誰會更難的題,而是比誰 更穩、更快、更少出錯。
所以如果你現在壓力很大、很焦慮——別急,我們都經歷過。
一步一步來,把 OA 穩住,就是最好的開始。
祝你早日拿到「Congratulations!」郵件。