
這套 Uber OA 是在 HackerRank 上考的。兩題都不難,但很考驗時間壓力下的實作穩定度。
Q1:商品折扣(單調棧)
核心思路
直接用單調棧,從右往左遍歷:
- 棧內存索引
- 維持棧內對應價格單調遞增
- 對第
i個商品,用棧頂找右側第一個<= 當前價格的折扣值
接著按題意同步維護三個結果:
discount[i]:第i個商品折扣total:所有商品折扣後總價fullPriceIdx:以原價購買的商品索引
最後輸出總價與原價商品索引。
複雜度
- 時間複雜度:
O(n) - 空間複雜度:
O(n)
Q2:連通時間 / 連通分量數(並查集)

本質
本質是連通分量問題,直接用並查集(Union-Find)。
建圖與合併
按 x 與 y 分組:
- 同
x代表同一列(row) - 同
y代表同一行(column)
再在兩個方向分別排序與合併:
- 同
x組內按y由小到大排,符合條件就 union - 同
y組內按x由小到大排,符合條件就 union
最後統計不同 root 數量(不連通分量數),再依題意轉成最終時間/答案。
複雜度
設點數為 n:
- 分組與排序主導:通常
O(n log n) - 並查集操作近似:
O(n α(n)) - 總體:
O(n log n)
面試常見失誤
- Q1 單調棧條件寫反
- Q1 漏掉
total或fullPriceIdx的同步更新 - Q2 只合併同
x或只合併同y - Q2 排完序後沒判斷條件就直接 union
一句話總結
Q1 是標準單調棧模板,Q2 是「分組排序 + 並查集」的連通分量題。狀態維護清楚,基本就能穩定通過。
Uber OA 沒把握可以輔助,其他公司也可以問問。
#uber #美國留學生 #北美求職 #留學生求職 #留學生實習 #留學生找工作 #hackerrank #面經
延伸閱讀(外鏈)
需要面試真題? 立刻聯繫微信 Coding0201,獲得真題。
聯繫方式
Email: [email protected]
Telegram: @OAVOProxy