← 返回博客列表 精通 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