Citadel OA Hackerrank 覆盤 | 10分鐘秒AC,簡單分享思路

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

Citadel OA Hackerrank 覆盤 | 10分鐘秒AC,簡單分享思路

Question 1(伺服器升級時間最小化)

題目描述

有兩臺伺服器,各自的升級所需時間分別為 t1 秒和 t2 秒。在每一秒,只有一臺伺服器會進行升級。兩臺伺服器會在特定時間點接收請求(第一臺在 req1 的倍數秒,第二臺在 req2 的倍數秒),並且在接收請求的秒數必須暫停升級。

請計算完成兩臺伺服器升級所需的最小總時間(單位:秒)。

注意

  • 任意時刻最多隻有一臺伺服器在升級。
  • 可能存在沒有任何伺服器在升級的空閒秒數。

示例

  • req1 = 2t1 = 3
  • req2 = 3t2 = 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 = 3memoryBlock = [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。

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