Google 2026 New Grad OA 新題速遞 | Google OA分享

這次 Google 2026 New Grad OA 確實換新題了,感覺題庫終於開始動了。整體難度不算特別刁鑽,但思考方向如果跑偏,其實挺容易浪費時間。流程還是老樣子,拍照驗證之後直接開做,前後大概十分鐘就把主體寫完了。提交後系統又補了兩個 test case,算是小小壓力測試,好在思路本身比較穩,最後順利 AC。簡單說下兩道題的核心解法。

Coding 1

給定一個陣列 A,表示學生的身高。所有學生需要排成若干隊伍,學生會按照陣列中出現的順序依次到達。對於第 i 個學生,如果存在一支隊伍,其中所有學生的身高都高於 A[i],那麼該學生可以加入其中任意一支隊伍;如果不存在這樣的隊伍,則該學生需要新建一支隊伍。你的任務是計算最終最少會建立多少支隊伍。

請編寫一個函式:給定一個非空整數陣列 A(長度為 N),返回最少建立的隊伍數量。

Google 2026 New Grad OA

解題思路

這題本質是在維護若干個“隊尾嚴格遞減”的隊伍。每來一個學生,就去找當前隊伍中隊尾身高大於他的那一排,並儘量把他放進去,這樣可以給後面的學生留下更多空間。如果沒有符合條件的隊伍,就新開一排。實現時可以用一個陣列記錄每排的隊尾,並保持有序,然後透過二分查詢找到第一個大於當前身高的位置進行替換;找不到就追加新隊伍。整體是一個典型的貪心 + 二分維護單調結構(LIS 變形),時間複雜度可以做到 O(n log n)

Coding 2

有若干需要執行的程序。每個程序對執行它的伺服器會產生一定的負載,該負載由一個整數表示。伺服器的總負載等於其上所有程序負載之和。現在你有兩臺伺服器可供使用,需要將所有程序分配到這兩臺伺服器上,使得它們的總負載差的絕對值最小。

請編寫一個函式:給定一個包含 N 個整數的陣列 A,其中每個元素表示對應程序的負載,函式應返回兩臺伺服器負載差的最小絕對值。

Google 2026 NG OA

解題思路

目標是讓兩臺伺服器的負載儘可能接近,因此可以把問題轉化為:從陣列中選出一部分程序,使它們的總和儘量接近所有負載和的一半。設總和為 S,只要找到一個子集和最接近 S/2,最終差值就是 S - 2 * subsetSum。這是非常典型的0/1 揹包 / 子集劃分問題:用布林 DP 判斷某個和是否可達,從 target = S/2 往下尋找第一個可行值即可。時間複雜度通常為 O(n * S),在資料範圍不極端的 OA 場景下完全可行。

Google 26 NG SDE OA 體驗分享

順便說一下這次 OA 的整體體驗。我這場是找了 programhelp 做全程 OA輔助 ,幫我省下了不少來回試錯的時間。尤其是這種需要迅速識別題型的 OA,有人在關鍵點提醒一下方向,和自己硬想的效率完全不在一個量級。最後提交後補測的 test case 也都穩住了,沒有出現反覆修改的情況,整體做下來心態會輕鬆很多。如果你最近也在準備 Google 或其他大廠 OA,提前把這些不確定因素降下來,其實透過率會高不少。

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0