← 返回部落格列表 精通 Optiver OA:附樣題的完整攻略
Optiver

精通 Optiver OA:附樣題的完整攻略

2026-06-09

光看題型分類不夠,真正吃透 Optiver OA 要靠完整樣題精講。本文挑了三道有代表性的樣題,從題面到程式碼到變體一氣講完,幫你建立可遷移的解題套路。

Optiver OA 概覽

維度 詳情
平台 HackerRank / CodeSignal / 自有系統
時長 60–75 分鐘
題量 2–4 題
難度 LeetCode Medium+,重模擬與數學
考察重點 滑動視窗、貪心、期望值

樣題一:滑動視窗最大值(價格流)

題面:給定每秒價格陣列 prices 和視窗大小 k,輸出每個長度為 k 的視窗內的最高價(模擬即時盯盤)。

思路:暴力是 O(nk)。用單調遞減雙端佇列可降到 O(n):佇首始終是當前視窗最大值。

from collections import deque

def max_sliding_window(prices, k):
    dq = deque()  # 存索引,對應價格單調遞減
    result = []
    for i, p in enumerate(prices):
        # 移除視窗外的索引
        if dq and dq[0] <= i - k:
            dq.popleft()
        # 移除比當前小的尾部(它們不可能再成為最大)
        while dq and prices[dq[-1]] < p:
            dq.pop()
        dq.append(i)
        if i >= k - 1:
            result.append(prices[dq[0]])
    return result

時間複雜度:O(n) 變體:改成視窗最小價、或同時輸出最大最小價差。

樣題二:加權中位數(成交量加權價格)

題面:給定若干 (價格, 成交量),求成交量加權中位數——累計成交量首次達到總量一半時的價格。

思路:按價格排序後累加成交量,找到跨過半數的那個價格。

def weighted_median(pairs):
    # pairs: [(price, volume), ...]
    pairs.sort()
    total = sum(v for _, v in pairs)
    cum = 0
    for price, vol in pairs:
        cum += vol
        if cum * 2 >= total:  # 累計量達到一半
            return price
    return pairs[-1][0]

時間複雜度:O(n log n) 陷阱:注意「恰好一半」的邊界與偶數總量的定義。

樣題三:賭局期望(停時問題)

題面:每輪擲一枚均勻硬幣,正面 +1 分反面停止。問期望得分。

思路:經典停時期望。設期望為 E,每輪有 1/2 機率繼續 +1,1/2 停止:E = 1/2 × (1 + E),解得 E = 1。

def expected_score(p_continue=0.5, reward=1):
    # E = p*(reward + E)  =>  E = p*reward / (1 - p)
    return p_continue * reward / (1 - p_continue)

關鍵:識別出「自我引用的期望方程」是這類題的鑰匙,絕大多數停時問題都能這樣列方程秒解。

常見陷阱清單

❌ 滑動視窗忘記移除過期索引 ❌ 加權中位數把「條數中位」誤當「權重中位」 ❌ 期望題強行模擬,超時且不精確 ✅ 看到單調性想雙端佇列 ✅ 看到「直到…為止」想停時方程


FAQ

Optiver OA 樣題和真實考試差多少? 題型高度一致:滑動視窗、貪心、期望值是反覆出現的母題,把這幾類吃透再做變體就能覆蓋大部分真題。

這些題用什麼語言寫最好? Python 最省時間,deque、heapq、sort 都是內建利器。C++ 在極端資料量下更穩,按個人熟練度選。

期望值題一定要會列方程嗎? 強烈建議。停時類、遞迴期望類題目用方程幾秒解決,硬模擬既慢又容易精度出錯。

做完樣題還要練什麼? 練限時和變體。Optiver 最考速度,建議把每道母題的 2–3 個變體都寫一遍,形成肌肉記憶。

樣題都會了但臨場還是慢怎麼辦? 我們提供 Optiver OA輔助 與 OA代面:用真題難度的樣題做限時陪練,幫你把「會做」變成「快速做對」。


正在準備 Optiver 的 OA?

把母題吃透、變體練熟,是 Optiver OA 提速的唯一捷徑。我們的導師可提供滑動視窗、加權統計與期望值題的精講與限時模擬。需要系統規劃,歡迎交流,立刻聯繫微信 Coding0201獲取真題與備考資料


聯繫方式

Email: [email protected] Telegram: @OAVOProxy