← 返回博客列表
Microsoft

Microsoft OA 兩題全AC複盤:合金生產二分答案 + 區間重疊最大團隊

2026-03-20

Microsoft OA,75 分鐘兩道題,全AC。T1 是經典二分答案,T2 是區間相交統計。以下是純思路複盤,不含程式碼。

Microsoft OA 題目截圖


考試概況

項目 詳情
時長 75 分鐘
題數 2 道
難度 Medium
職位 Intern / New Grad SDE
結果 全AC

T1:合金最大生產量(二分答案)

Microsoft OA T1 合金生產題目

題目核心

給定 n 種金屬,每種金屬有:

預算為 budget,求最多能生產多少單位合金

解題思路

關鍵觀察:生產數量 x 越大,所需總成本單調遞增。這正是二分答案的適用條件。

二分答案框架

check(x) 校驗邏輯

  1. 對每種金屬 i,計算需要的總量:total = x * composition[i]
  2. stock[i] ≥ total,庫存足夠,無需購買
  3. 否則需購買 (total - stock[i]) 單位,花費 (total - stock[i]) * cost[i]
  4. 累加所有金屬的購買成本,判斷是否 ≤ budget

二分結果:找到最大的滿足 check(x)x

複雜度分析

關鍵洞察

單調性是二分的前提:生產量越多,成本越高,保證了二分正確性。check(x) 是一次線性掃描,整體複雜度極低。注意二分上界要設得夠大——可以用 (budget / min_cost + max_stock) 估算安全上界。


T2:區間重疊最大團隊

題目核心

給定每個員工的工作時間區間 [startTime[i], endTime[i]],兩個員工若區間有重疊則可以互動。要求找到一個團隊,使得存在一個**「中心員工」,他能與團隊內所有人都有時間重疊。求最大團隊人數**。

解題思路

問題等價轉化:找一個員工 i,使得與 i 的區間相交的員工數最多(含 i 自身)。

區間相交判斷[s1, e1][s2, e2] 相交當且僅當 max(s1, s2) ≤ min(e1, e2),等價於 s2 ≤ e1e2 ≥ s1

暴力做法:枚舉每個員工 i 作為中心,統計滿足相交條件的員工數,取最大值。O(n²)。

優化做法(O(n log n))

  1. 將所有區間按 start 排序
  2. 枚舉每個區間 i 作為中心,用二分找右邊界(start[j] ≤ end[i]),用左指針剔除結束過早的區間(end[j] < start[i]
  3. 有效區間數 = 右指針 - 左指針

複雜度分析

關鍵洞察

「中心員工能與所有人重疊」等價於「找覆蓋其他區間數最多的區間」。排序後雙指針是解決「某區間與多少其他區間相交」的標準模式。


兩題核心思路對比

題目 核心技巧 時間複雜度 空間複雜度
T1 合金生產 二分答案 + 線性校驗 O(n log C) O(1)
T2 最大團隊 排序 + 雙指針區間相交統計 O(n log n) O(n)

常見思維誤區

題目 誤區 正確方向
T1 直接枚舉生產數量 認識到單調性,用二分答案
T1 二分上界設太小導致答案截斷 用預算估算安全上界
T2 用 BFS/圖連通分量求解 本題不是連通,而是「某點覆蓋最多」
T2 暴力 O(n²) 超時 排序後雙指針降到 O(n log n)

Microsoft OA 應試策略

Microsoft OA 特點

臨場策略

  1. 看到「最多/最少滿足條件」類問題:先想單調性,單調則二分答案
  2. 看到區間重疊/覆蓋類問題:先排序,再考慮雙指針或掃描線
  3. T1 二分上界要想清楚,避免截斷答案
  4. T2 相交條件 max(s1,s2) ≤ min(e1,e2) 要記牢,等價於兩個不等式
  5. 寫完跑樣例,邊界情況都測一下

相關 LeetCode 練習

題號 題目 對應考點
2861 Maximum Number of Alloys T1 完全相同題型
875 Koko Eating Bananas T1 二分答案經典題
2779 Maximum Beauty of an Array T2 區間覆蓋計數
56 Merge Intervals T2 區間排序處理

🚀 需要 Microsoft OA 輔助?

oavoservice 專注北美大廠 OA/VO 全程輔助,Microsoft OA 是我們的核心服務場景,高頻題庫覆蓋率極高。

立即加 WeChat:Coding0201

獲取:

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