最近剛做完 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,尤其是時間緊、題量集中的場次,可以聯絡我們。