前兩天剛接了一場 Citadel OA ,Hackerrank平臺,兩道coding題,時間限制75分鐘。10分鐘左右就寫完了兩道題,後面純摸魚檢查+提交。感覺75分鐘給得過於保守了,搞不定的同學也可以大膽問問OA/VO經驗,整體難度偏簡單。

Question 1(伺服器升級時間最小化)
題目描述
有兩臺伺服器,各自的升級所需時間分別為 t1 秒和 t2 秒。在每一秒,只有一臺伺服器會進行升級。兩臺伺服器會在特定時間點接收請求(第一臺在 req1 的倍數秒,第二臺在 req2 的倍數秒),並且在接收請求的秒數必須暫停升級。
請計算完成兩臺伺服器升級所需的最小總時間(單位:秒)。
注意:
- 任意時刻最多隻有一臺伺服器在升級。
- 可能存在沒有任何伺服器在升級的空閒秒數。
示例:
req1 = 2,t1 = 3req2 = 3,t2 = 1- 第一臺伺服器在第 1、3、5 秒升級(均不是 2 的倍數),耗時 3 秒;第二臺在第 2 秒升級(不是 3 的倍數),耗時 1 秒。
- 總時間為 5 秒。
解題思路
題意就是把兩個伺服器的升級時間分配到若干秒上,但是每臺伺服器升級都有間隔,且同一秒最多升級一臺,那麼很顯然我們可以二分最終都升級完的時間,就是二分答案,就查當前 x 秒裡面給兩臺伺服器用的秒數是否都夠,然後再看總共可用的秒是否能恰好覆蓋 t1 和 t2。
Question 2(記憶體塊 MEX 有效大小)
題目描述
有 n 個記憶體塊,第 i 個塊的大小為 memoryBlocks[i]。你可以執行最多一次操作:選擇一個索引 x,將 memoryBlocks[x] 的大小加 1(前提是 memoryBlocks[x] < n-1)。
操作後,陣列的MEX(最小未出現的非負整數) 被稱為一個有效大小。請返回所有可能的有效大小,並按升序排列。
示例:
n = 3,memoryBlock = [0, 3, 4]- 不操作時,MEX 為 1;操作
x=0後,陣列變為[1, 3, 4],MEX 為 0。 - 所有可能的有效大小為
[0, 1]。
解題思路
統計一下每個數字出現的次數,然後從左到右掃一遍,維護當前還能用多少個操作次數。如果當前數字的個數加上剩餘運算元都湊不夠這個數,那後面的數都別想了。最後看能湊出哪些MEX值,從小到大列出來就行。
關於Citadel等大廠OA
這次OA真的很友好,兩道題加起來不到10分鐘就寫完除錯透過了。感覺Citadel這次OA難度控制得比較低,或者運氣好抽到了簡單版本。有同樣經歷的同學歡迎交流~ 下一輪VO如果有的話再來更新。
另外,如果大家正在準備Citadel、Jane Street、Two Sigma、Hudson River Trading等頂級量化/高頻公司的OA或筆試,需要靠譜的代寫/包過服務,可以私信我。 Programhelp提供專業 OA代寫服務 (HackerRank、牛客網、Codesignal等平臺),支援遠端控制無痕操作,確保所有測試用例100%透過,不透過不收費。服務覆蓋多家大廠筆試,已幫助多名同學順利透過OA。