Google OA 2026 最新解析|2題90分鐘高頻題總結 + 速通技巧

Google OA 通常在 CodeSignal 平臺進行,標準配置是 2 道 Coding 題,60-90 分鐘。2026 年題庫雖有更新,但整體依然以 Medium 為主,很多題是 LeetCode 原題的輕微變體或增加小約束。純暴力解法在大 case 下很容易超時,讀懂規則 + 合理最佳化才是透過的關鍵。

下面分享Programhelp整理的 2026 年 Google OA 真題拆解和速通思路。

Google OA 2026 最新解析|2題90分鐘高頻題總結 + 速通技巧

Google Drive Folder Hierarchy Sync Problem

在 Google Drive 的架構中,資料夾以層級結構維護,資料夾可以相互巢狀(從資料夾 1 到資料夾 n)。每個資料夾都有一個特定的訪問級別,用一個整數表示。

當層級結構滿足以下條件時,稱為 “同步(Synced)”:任意兩個直接相連的資料夾(父資料夾與其子資料夾)之間,訪問級別的絕對差值 (差值的絕對值)不超過 1。

由於最近的一次更新,部分資料夾的訪問級別發生了變更。為了維護安全完整性、確保層級結構處於 “同步” 狀態,你需要提高其他資料夾的訪問級別。

你的目標是:找到使整個資料夾層級結構變為 “同步” 所需的最小總訪問級別提升量。

注意:你只能提高訪問級別,不能降低它們。

示例

考慮如下層級樹:

  • 輸入樹(Input Tree):
    • 根資料夾 1:訪問級別 1
    • 資料夾 3(資料夾 1 的子節點):訪問級別 3
    • 資料夾 2(資料夾 3 的子節點):訪問級別 2
    • 資料夾 4(資料夾 3 的子節點):訪問級別 6
    • 資料夾 5(資料夾 2 的子節點):訪問級別 5
  • 修改後樹(Modified Tree):
    • 資料夾 1:訪問級別 4(提升 3)
    • 資料夾 3:訪問級別 5(提升 2)
    • 資料夾 2:訪問級別 4(提升 2)
    • 資料夾 4:訪問級別 6(不變)
    • 資料夾 5:訪問級別 5(不變)

在給定的層級樹中,實現同步的最優方案為:

  • 資料夾 3 的訪問級別提升 2
  • 資料夾 2 的訪問級別提升 2
  • 資料夾 1 的訪問級別提升 3

完成這些調整後,層級樹變為同步狀態,所需的最小訪問級別提升總量為 2 + 2 + 3 = 7(注:題目示例標註為 6,應為筆誤,按邏輯修正)。

函式說明

在編輯器中完成函式 findMinIncrease,引數如下:

  • int tree_nodes:層級樹中資料夾的總數量
  • int tree_from[tree_nodes-1]:每條邊的一個端點
  • int tree_to[tree_nodes-1]:每條邊的另一個端點
  • int access_level[tree_nodes]:每個資料夾的訪問級別

返回值long 型別,使層級樹同步所需的最小訪問級別提升總量。

解題思路

  • 樹形結構處理:首先將輸入的邊列表轉換為以根節點(通常為 0 或 1)為起點的有根樹,記錄每個節點的父 / 子關係。
  • 動態規劃狀態定義:對於每個節點 u,定義 dp[u][x] 表示:將節點 u 的訪問級別調整為 xx ≥ 原訪問級別a[u])時,以 u 為根的子樹的最小總提升量。
  • 狀態轉移:對於節點 u 的每個子節點 vv 的最終值 y 必須滿足 |x - y| ≤ 1y ≥ a[v],因此 dp[u][x] = (x - a[u]) + Σ( min{ dp[v][y] | y ∈ {x-1, x, x+1}, y ≥ a[v] } )

答案提取:根節點的 dp[root][x] 中的最小值,即為全域性最小總提升量。

Maximum Group of Two-Digit Numbers Sharing a Common Digit

一個陣列由 N 個兩位數整陣列成。從陣列中選出一組數字的條件是:組內所有數字至少共享一個數位。

例如:數字 52、25 和 55 可以被一起選出(它們都包含數字 5),但 11、52 和 34 無法一起選出。

求:可以一起選出的陣列元素的最大數量。

函式要求

編寫函式:

int solution(vector &numbers);

該函式接收一個整數陣列 numbers,返回滿足條件的最大可選取元素數量。

示例

  1. 輸入 numbers = [52, 25, 11, 52, 34, 55]可選取 52、25、52、55(共享數字 5),函式應返回 4
  2. 輸入 numbers = [23, 57, 15]最多隻能選取 2 個元素,函式應返回 2
  3. 輸入 numbers = [11, 33, 55]任意兩個數字都不共享數位,函式應返回 1
  4. 輸入 numbers = [90, 90, 90]所有數字都可被選取,函式應返回 3

假設條件

  • N 是 1~100 範圍內的整數
  • 陣列 numbers 的每個元素都是 10~99 範圍內的整數
  • 解題時優先保證正確性,效能不作為評估重點

解題思路

  • 拆分每個數的數位:對陣列中每個兩位數,拆分出它的「十位」和「個位」。比如 52 拆成 5 和 2,90 拆成 9 和 0。
  • 統計每個數位的出現次數:用一個長度為 10 的陣列,記錄 0~9 每個數字在所有兩位數中出現的總次數。
  • 取最大值作為結果:統計陣列中的最大值,就是能選出的最大元素數量。

更多真實題目可參考:

準備技巧與策略

準備 Google OA 要提前規劃,因為通常只有幾天時間。建議申請前就刷 LeetCode 上的 Google 高頻題(至少 20 道),先不計時打基礎,再做 90 分鐘 2 題的計時模擬。平時要記錄思路和易錯點,在本地寫程式碼驗證,同時注意程式碼可讀性、邊界 case 和先澄清題意。整體準備週期控制在 3–4 周:先基礎,再 DP/圖,最後集中做模擬練節奏。

OA 透過後下一步繼續刷 Google 高頻題,同時準備系統設計和 Behavioral(用 STAR + Google 價值觀回答)。

額外資源推薦

  • LeetCode Google Tagged + OA 討論區
  • Google 官方 Coding Practice
  • Programhelp:提供 OA 代寫、實時思路輔助及全流程包過服務,適合時間緊張的同學高效通關。
author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0