Uber OA 真題分享|單調棧 + 區間連續性判斷思路拆解|三題完整覆盤

Uber OA 剛結束,趁熱來寫個分享攢人品。我這場是三道題的結構,整體難度大概是:基礎紮實的人會覺得順滑,平時只刷零散題目的人可能會有點卡。下面說下思路。

題目 1:最小冪次運算次數

給定正整數 n,每次操作可對其加或減一個 2 的整數次冪(2^ii≥0)。

要求:計算將 n 變為 0 所需的最少操作次數。

題目 1:最小冪次運算次數

解題思路

加減操作目標為最大化消除二進位制表示中的 1,當末兩位為 11 時執行 +1 操作,可消除連續的 1,當末兩位為 01 時執行 -1 操作,可消除單個 1 ,當末位為 0 時直接右移一位 持續檢查數值的二進位制末兩位:11 → 執行 +1,01 → 執行 -1 ,0X → 右移一位 直至數值為零,統計總操作次數。

題目 2:商品最終定價計算

給定商品價格陣列,每個商品的最終價 = 原價 – 右側第一個≤它的價格(無則按原價)。

要求:輸出所有商品最終價的總和,以及按原價出售的商品的 0-based 索引(升序空格分隔)。

題目 2:商品最終定價計算

解題思路

對於每個 p[i] 而言,如果他右邊有小於等於他的,那麼找到第一個小於等於他的 p[j],p[i] 的價值會變為 p[i] – p[j],否則不變,讓我們輸出最終的所有價值和還有沒有變的物品下標,就用單調棧維護一下就行了。

題目 3:平衡數字判定

給定 1~n 的排列陣列 p,若存在區間 [l,r],使得區間內數字恰好是 1~k 的排列,則 k 是平衡數字。

要求:對 1~n 的每個 k 判定是否平衡,返回長度為 n 的二進位制字串(第 k 位為 1 表示平衡,0 反之)。

題目 3:平衡數字判定

解題思路

考慮讓我們求 1~n,對於每個 i,[1,i] 是不是全出現在一個區間裡,並且沒有別的數,很顯然 [1,i] 的是可以往 [1,i + 1] 去推的,並且只和 [1,i]的左右端點 [l,r] 有關,就維護一個最左和最右,如果 r – l + 1 恰好等於 i 那麼就合法,否則就不合法。

瞭解更多

如果你正在準備 Uber / TikTok / Microsoft 等大廠 OA,建議一定要提前做針對性訓練。很多同學不是不會做,而是模型不熟、時間分配不合理、細節不夠穩。我們提供系統化真題整理、OA無痕助攻 ,幫助你在真實考試節奏下穩定發揮,提升透過率。

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