← 返回编程题库
coding-rolling-quote-stale-flags中等免费版2000ms未尝试

报价更新时间流上的"陈旧期后首次更新"标记

First-Update-After-Stale-Period Flags on a Quote-Update Timestamp Stream

开始编码

实现 solution(times: list[float], stale_W: float) -> list[int]。某行情数据源发布报价更新的时间戳序列 times(单位为秒,自交易日开盘起算,单调非减)。给定一个严格为正的陈旧阈值 stale_W,对每个索引 i 返回间隙 times[i] - times[i-1] 是否 严格 大于 stale_W —— 是则返回 1(该笔更新是"陈旧期后的第一笔"),否则返回 0i = 0 时不存在前驱,按约定返回 1(流的起点视作未定先验陈旧期的结束,下游价格复核需在此触发)。边界情形 times[i] - times[i-1] == stale_W 恰好等于阈值时被标记(不等式为严格的 >,而非 >=)。

stale_W 期望为严格大于 0 的有限浮点数。若 stale_W <= 0(或为 NaN / 非有限值),函数返回长度为 N 的全 1 哨兵列表,绝不抛出异常——非正的陈旧窗口没有有意义的语义,对一个新鲜度监视器来说,把每一笔都置为待复核是更安全的方向。

solution([0.0, 0.5, 1.0, 3.5, 3.5, 4.0, 10.0], 1.0) 返回 [1, 0, 0, 1, 0, 0, 1]。索引 0 由哨兵约定置 1。到索引 1 的间隙为 0.5 ≤ 1.0 → 0。到索引 2 的间隙为 0.5 ≤ 1.0 → 0。到索引 3 的间隙为 2.5 > 1.0 → 1(沉默 2.5 秒后的首笔更新)。到索引 4 的间隙为 0.0(零间隙,相等时间戳)≤ 1.0 → 0。到索引 5 的间隙为 0.5 ≤ 1.0 → 0。到索引 6 的间隙为 6.0 > 1.0 → 1。

solution([0.0, 1.0, 2.0, 3.0], 1.0) 中所有内部间隙恰好等于 stale_W。在 严格 > 下答案为 [1, 0, 0, 0] —— 边界间隙不被标记。若误用 >= 则会得到 [1, 1, 1, 1],触发"复核风暴",这正是本题主要防守的变异点。空输入返回 []。非法阈值如 solution([0.1, 0.2, 0.3], -1.0) 返回 [1, 1, 1]。函数骨架见 stubs/stub.py

实践背景

实时行情新鲜度监视器会逐 instrument 监控相邻报价更新之间的间隙。当间隙超过按品种调好的阈值(典型流动品种几十毫秒,冷门品种几秒),紧接的下一笔更新被视作"陈旧期后的首次报价":下游价格复核逻辑必须用最新成交校验新中价,并重置缓存中的价差,因为先前的价位可能已经远离真实订单簿。把这个判断编码为与 tick 流对齐的 0/1 标记,能让监视器与已经消费 times 的向量化盘后分析共用同一条流水线——无需额外的定时器线程,一次查表即可。严格 vs 非严格的取舍并非细节:在一条节奏精确为阈值的报价流上,使用 >= 会把每一笔合法更新都标为陈旧,把复核路径整个泛洪。

约束条件

  • 0 <= len(times) <= 200000;每个元素为有限非负浮点数,单位为秒。列表单调非减;相等时间戳(零间隙)合法且除了索引 0 哨兵外永不被标记
  • stale_W 期望为严格大于 0 的有限浮点数;典型量级为 1e-3 到 60 秒。若 stale_W <= 0(或为 NaN / 非有限值),函数返回长度为 N 的全 1 哨兵列表——**绝不抛出异常**
  • 标记规则使用 **严格** 不等式 `times[i] - times[i-1] > stale_W`;间隙恰好等于 `stale_W` 时**不**标记
  • 索引 0 始终返回 1(哨兵:首次观测无前驱,视作未定的先验陈旧期结束)。空输入返回 `[]`
  • 输出为长度 N、与输入下标对齐的 `int` 列表,取值在 `{0, 1}` 之中;比对方式为整数精确比对,对答案不引入任何浮点容差

样例

Case 1 · statement-example: seven-tick stream W=1.0 with batch + long gap

输入: [[0,0.5,1,3.5,3.5,4,10],1]

期望: [1,0,0,1,0,0,1]

索引 0 由哨兵约定置 1;间隙 0.5、0.5 不超过阈值故为 0;间隙 2.5 严格大于 1.0 故为 1;零间隙(相等时间戳)不超过阈值为 0;间隙 0.5 为 0;间隙 6.0 严格大于 1.0 为 1。

Case 2 · statement-example: uniform spacing exactly equal to stale_W (strict-> guard)

输入: [[0,1,2,3],1]

期望: [1,0,0,0]

所有内部间隙恰好等于阈值 1.0;严格 > 下不应被标记,故除索引 0 哨兵外全 0。该用例守护 `>=` 变异。

Case 3 · typical: mixed gaps with one clear stale jump

输入: [[0.1,0.2,0.5,0.8,5,5.1,5.2],0.5]

期望: [1,0,0,0,1,0,0]

索引 0 哨兵;间隙 0.1, 0.3, 0.3 都不超 0.5 故 0;间隙 4.2 严格大于 0.5 故 1;后续 0.1, 0.1 故 0。

Case 4 · typical: increasing gaps, each crosses a different threshold

输入: [[0,0.1,0.3,0.7,1.5,3.1,6.3],1]

期望: [1,0,0,0,0,1,1]

间隙序列 0.1, 0.2, 0.4, 0.8, 1.6, 3.2;前四个 ≤ 1.0 不标记,后两个严格大于 1.0 故标记。

Case 5 · typical: dense quote storm followed by extended silence

输入: [[0,0.001,0.002,0.003,0.004,0.005,1.5,1.501,1.502],0.05]

期望: [1,0,0,0,0,0,1,0,0]

前 6 笔间隙 0.001 远小于 0.05;间隙 1.495 严格大于阈值故标记;最后两笔间隙 0.001 不标记。

Case 6 · typical: repeated equal-to-threshold gaps interspersed with one larger

输入: [[0,2,4,4.000001,6.000001],2]

期望: [1,0,0,0,0]

间隙 2.0、2.0 恰好等于阈值不标记;间隙 0.000001 远小于阈值不标记;间隙 2.0 也恰好等于阈值不标记;最终除索引 0 外全 0。

Case 7 · typical: just-above-threshold gap by 1e-9

输入: [[0,0.500000001],0.5]

期望: [1,1]

唯一间隙比阈值大 1e-9,严格 > 故标记。

Case 8 · typical: just-below-threshold gap by 1e-9

输入: [[0,0.499999999],0.5]

期望: [1,0]

唯一间隙比阈值小 1e-9,不严格大于阈值故不标记。

Case 9 · boundary: empty input

输入: [[],1]

期望: []

空输入直接返回空列表。

Case 10 · boundary: single-element input always returns [1]

输入: [[3.14],0.5]

期望: [1]

单个元素仅触发哨兵,输出 [1]。

Case 11 · boundary: single-element input with very large stale_W still returns [1]

输入: [[100],1000000000]

期望: [1]

无论阈值多大,单元素仍因哨兵约定返回 [1]。

Case 12 · boundary: all-equal timestamps (zero gaps) -> only sentinel flags

输入: [[5,5,5,5,5],0.001]

期望: [1,0,0,0,0]

所有间隙为 0,零间隙不超过任何正阈值故不标记;仅索引 0 哨兵为 1。

Case 13 · boundary: invalid stale_W = 0 returns all 1s sentinel

输入: [[0.1,0.2,0.3,0.4],0]

期望: [1,1,1,1]

stale_W = 0 不为正,返回长度 4 的全 1 哨兵;不抛出异常。

Case 14 · boundary: invalid stale_W < 0 returns all 1s sentinel

输入: [[0,0.1,0.2],-1]

期望: [1,1,1]

stale_W < 0 非法,返回全 1 哨兵;不抛出异常。

Case 15 · boundary: invalid stale_W = NaN returns all 1s sentinel

输入: [[0,0.1,0.2,0.3,0.4],"NaN"]

期望: [1,1,1,1,1]

NaN 非有限值,返回全 1 哨兵;不抛出异常。

Case 16 · boundary: invalid stale_W = -inf returns all 1s sentinel

输入: [[1,2,3],"-Infinity"]

期望: [1,1,1]

-inf 非正,返回全 1 哨兵。

Case 17 · boundary: empty input with invalid stale_W still returns []

输入: [[],-5]

期望: []

空输入即便阈值非法也直接返回空列表。

Case 18 · boundary: two ticks with gap exactly at threshold -> [1, 0]

输入: [[10,10.5],0.5]

期望: [1,0]

唯一间隙恰好等于阈值,严格 > 不成立,不标记;输出 [1, 0]。

Case 19 · boundary: two ticks with gap just above threshold -> [1, 1]

输入: [[10,10.500000000001],0.5]

期望: [1,1]

唯一间隙仅比阈值大 1e-12,严格 > 成立,标记;输出 [1, 1]。

Case 20 · boundary: very large stale_W -> never flags after sentinel

输入: [[0,1,2,3,4,5],1000000]

期望: [1,0,0,0,0,0]

所有间隙远小于巨大阈值,除哨兵外全 0。

Case 21 · boundary: very small positive stale_W catches every micro-gap

输入: [[0,1e-9,2e-9,0.001],1e-12]

期望: [1,1,1,1]

极小正阈值;所有间隙都严格大于它故全 1。

Case 22 · adversarial: alternating just-above and just-below gaps

输入: [[0,1.0001,2,3.0001,4,5.0001],1]

期望: [1,1,0,1,0,1]

间隙交替 1.0001、0.9999、1.0001、0.9999、1.0001;严格 > 1.0 时奇数位置标记,偶数不标记。

Case 23 · adversarial: long batch of equal-timestamps then a gap

输入: [[1,1,1,1,1,1,1,1,1.5],0.4]

期望: [1,0,0,0,0,0,0,0,1]

前 8 笔均为 1.0 的批次,零间隙不标记;最后一笔间隙 0.5 严格大于 0.4 故标记。

Case 24 · adversarial: gap exactly equals stale_W via float arithmetic

输入: [[0,0.30000000000000004],0.30000000000000004]

期望: [1,0]

通过浮点算术使间隙与阈值二进制完全相等,严格 > 不成立,不标记。

Case 25 · adversarial: monotonically non-decreasing with a single zero-gap pair near a stale jump

输入: [[0,0,5,5,5.5],0.5]

期望: [1,0,1,0,0]

索引 0 哨兵;零间隙不标记;间隙 5.0 严格大于 0.5 标记;零间隙不标记;间隙 0.5 恰等于阈值不标记。

Case 26 · adversarial: gap is +inf-ish (very large) far above threshold

输入: [[0,1000000000000000],1]

期望: [1,1]

1e15 远大于 1.0,严格 > 成立,索引 1 标记。

Case 27 · adversarial: invalid stale_W = +inf returns all 1s sentinel

输入: [[0,0.5,1,2,5],"Infinity"]

期望: [1,1,1,1,1]

+inf 非有限值,依据合约返回全 1 哨兵;不抛出异常。该用例锁定非有限阈值的门控逻辑。

Case 28 · adversarial: descending hand-counted boundaries near threshold

输入: [[0,0.999999,1.999999,3,4,5.000001],1]

期望: [1,0,0,1,0,1]

间隙 0.999999、1.000000、1.000001、1.000000、1.000001;严格 > 1.0 仅在第三和第五个为真。

最近提交

还没有提交记录。

编码区

实现 solution(...)。本地运行当前支持 Python 可见样例;服务端提交会运行可见样例和隐藏测试。

加载编辑器...
计时0:00

默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。

Case 1 · statement-example: seven-tick stream W=1.0 with batch + long gap

输入: [[0,0.5,1,3.5,3.5,4,10],1]

期望: [1,0,0,1,0,0,1]

索引 0 由哨兵约定置 1;间隙 0.5、0.5 不超过阈值故为 0;间隙 2.5 严格大于 1.0 故为 1;零间隙(相等时间戳)不超过阈值为 0;间隙 0.5 为 0;间隙 6.0 严格大于 1.0 为 1。

Case 2 · statement-example: uniform spacing exactly equal to stale_W (strict-> guard)

输入: [[0,1,2,3],1]

期望: [1,0,0,0]

所有内部间隙恰好等于阈值 1.0;严格 > 下不应被标记,故除索引 0 哨兵外全 0。该用例守护 `>=` 变异。

Case 3 · typical: mixed gaps with one clear stale jump

输入: [[0.1,0.2,0.5,0.8,5,5.1,5.2],0.5]

期望: [1,0,0,0,1,0,0]

索引 0 哨兵;间隙 0.1, 0.3, 0.3 都不超 0.5 故 0;间隙 4.2 严格大于 0.5 故 1;后续 0.1, 0.1 故 0。

Case 4 · typical: increasing gaps, each crosses a different threshold

输入: [[0,0.1,0.3,0.7,1.5,3.1,6.3],1]

期望: [1,0,0,0,0,1,1]

间隙序列 0.1, 0.2, 0.4, 0.8, 1.6, 3.2;前四个 ≤ 1.0 不标记,后两个严格大于 1.0 故标记。

Case 5 · typical: dense quote storm followed by extended silence

输入: [[0,0.001,0.002,0.003,0.004,0.005,1.5,1.501,1.502],0.05]

期望: [1,0,0,0,0,0,1,0,0]

前 6 笔间隙 0.001 远小于 0.05;间隙 1.495 严格大于阈值故标记;最后两笔间隙 0.001 不标记。

Case 6 · typical: repeated equal-to-threshold gaps interspersed with one larger

输入: [[0,2,4,4.000001,6.000001],2]

期望: [1,0,0,0,0]

间隙 2.0、2.0 恰好等于阈值不标记;间隙 0.000001 远小于阈值不标记;间隙 2.0 也恰好等于阈值不标记;最终除索引 0 外全 0。

Case 7 · typical: just-above-threshold gap by 1e-9

输入: [[0,0.500000001],0.5]

期望: [1,1]

唯一间隙比阈值大 1e-9,严格 > 故标记。

Case 8 · typical: just-below-threshold gap by 1e-9

输入: [[0,0.499999999],0.5]

期望: [1,0]

唯一间隙比阈值小 1e-9,不严格大于阈值故不标记。

Case 9 · boundary: empty input

输入: [[],1]

期望: []

空输入直接返回空列表。

Case 10 · boundary: single-element input always returns [1]

输入: [[3.14],0.5]

期望: [1]

单个元素仅触发哨兵,输出 [1]。

Case 11 · boundary: single-element input with very large stale_W still returns [1]

输入: [[100],1000000000]

期望: [1]

无论阈值多大,单元素仍因哨兵约定返回 [1]。

Case 12 · boundary: all-equal timestamps (zero gaps) -> only sentinel flags

输入: [[5,5,5,5,5],0.001]

期望: [1,0,0,0,0]

所有间隙为 0,零间隙不超过任何正阈值故不标记;仅索引 0 哨兵为 1。

Case 13 · boundary: invalid stale_W = 0 returns all 1s sentinel

输入: [[0.1,0.2,0.3,0.4],0]

期望: [1,1,1,1]

stale_W = 0 不为正,返回长度 4 的全 1 哨兵;不抛出异常。

Case 14 · boundary: invalid stale_W < 0 returns all 1s sentinel

输入: [[0,0.1,0.2],-1]

期望: [1,1,1]

stale_W < 0 非法,返回全 1 哨兵;不抛出异常。

Case 15 · boundary: invalid stale_W = NaN returns all 1s sentinel

输入: [[0,0.1,0.2,0.3,0.4],"NaN"]

期望: [1,1,1,1,1]

NaN 非有限值,返回全 1 哨兵;不抛出异常。

Case 16 · boundary: invalid stale_W = -inf returns all 1s sentinel

输入: [[1,2,3],"-Infinity"]

期望: [1,1,1]

-inf 非正,返回全 1 哨兵。

Case 17 · boundary: empty input with invalid stale_W still returns []

输入: [[],-5]

期望: []

空输入即便阈值非法也直接返回空列表。

Case 18 · boundary: two ticks with gap exactly at threshold -> [1, 0]

输入: [[10,10.5],0.5]

期望: [1,0]

唯一间隙恰好等于阈值,严格 > 不成立,不标记;输出 [1, 0]。

Case 19 · boundary: two ticks with gap just above threshold -> [1, 1]

输入: [[10,10.500000000001],0.5]

期望: [1,1]

唯一间隙仅比阈值大 1e-12,严格 > 成立,标记;输出 [1, 1]。

Case 20 · boundary: very large stale_W -> never flags after sentinel

输入: [[0,1,2,3,4,5],1000000]

期望: [1,0,0,0,0,0]

所有间隙远小于巨大阈值,除哨兵外全 0。

Case 21 · boundary: very small positive stale_W catches every micro-gap

输入: [[0,1e-9,2e-9,0.001],1e-12]

期望: [1,1,1,1]

极小正阈值;所有间隙都严格大于它故全 1。

Case 22 · adversarial: alternating just-above and just-below gaps

输入: [[0,1.0001,2,3.0001,4,5.0001],1]

期望: [1,1,0,1,0,1]

间隙交替 1.0001、0.9999、1.0001、0.9999、1.0001;严格 > 1.0 时奇数位置标记,偶数不标记。

Case 23 · adversarial: long batch of equal-timestamps then a gap

输入: [[1,1,1,1,1,1,1,1,1.5],0.4]

期望: [1,0,0,0,0,0,0,0,1]

前 8 笔均为 1.0 的批次,零间隙不标记;最后一笔间隙 0.5 严格大于 0.4 故标记。

Case 24 · adversarial: gap exactly equals stale_W via float arithmetic

输入: [[0,0.30000000000000004],0.30000000000000004]

期望: [1,0]

通过浮点算术使间隙与阈值二进制完全相等,严格 > 不成立,不标记。

Case 25 · adversarial: monotonically non-decreasing with a single zero-gap pair near a stale jump

输入: [[0,0,5,5,5.5],0.5]

期望: [1,0,1,0,0]

索引 0 哨兵;零间隙不标记;间隙 5.0 严格大于 0.5 标记;零间隙不标记;间隙 0.5 恰等于阈值不标记。

Case 26 · adversarial: gap is +inf-ish (very large) far above threshold

输入: [[0,1000000000000000],1]

期望: [1,1]

1e15 远大于 1.0,严格 > 成立,索引 1 标记。

Case 27 · adversarial: invalid stale_W = +inf returns all 1s sentinel

输入: [[0,0.5,1,2,5],"Infinity"]

期望: [1,1,1,1,1]

+inf 非有限值,依据合约返回全 1 哨兵;不抛出异常。该用例锁定非有限阈值的门控逻辑。

Case 28 · adversarial: descending hand-counted boundaries near threshold

输入: [[0,0.999999,1.999999,3,4,5.000001],1]

期望: [1,0,0,1,0,1]

间隙 0.999999、1.000000、1.000001、1.000000、1.000001;严格 > 1.0 仅在第三和第五个为真。