← 返回编程题库
coding-cross-feed-max-min-paired-lag中等免费版2000ms未尝试

跨源行情最差最近匹配配对滞后

Worst Cross-Feed Closest-Match Paired Lag

开始编码

一位交易员同时跑两条同标的的市场数据 feed——一条同机房主 feed(ts_a)、一条异地灾备 feed(ts_b),需要每天报一项 SLO 健康指标:在所有主 feed 心跳上,到灾备 feed 任意心跳的最近匹配差距,最坏情形有多大。请实现 solution(ts_a: list[int], ts_b: list[int]) -> int,返回 i 上 min_j |ts_a[i] - ts_b[j]| 的最大值。任一流为空时返回哨兵 -1 表示无可行配对。

ts_ats_b 都是严格升序的整数毫秒时间戳数组。两路均已预排序,所以最优形状是双指针线性扫描:维护一个指向 ts_b 的指针 j,当 j+1 < M 且 ts_b[j+1] <= ts_a[i] 时持续推进。推进后 ts_a[i] 的最近 b 必为 ts_b[j] 或(当 j+1 < M 时)ts_b[j+1] 之一;取两者距离的较小值,并维护跨 i 的最大值。

边界情形:

  • len(ts_a) == 0len(ts_b) == 0,返回 -1——无可行配对。
  • ts_a 整段位于 ts_b 最小值之下,最坏情形是最左边的 ts_a[0]ts_b[0]
  • ts_a 整段位于 ts_b 最大值之上,最坏情形是最右边的 ts_a[-1]ts_b[-1]
  • 横跨混合(部分 a 小于 ts_b[0]、部分落在相邻 b 之间、部分大于 ts_b[-1])由双指针扫描统一处理。

例如:

ts_a = [10, 20, 35, 50]
ts_b = [11, 22, 49, 200]

solution(ts_a, ts_b) 返回 13。最近匹配距离分别为:101112022235 介于 22(差 13)与 49(差 14)之间,最近为 1350491。这些差距的最大值为 13(由 ts_a[2] = 35 主导)。

实践背景

当两条冗余 feed 并行跑时,最差配对滞后是 feed 健康度最干净的微观结构运维指标之一。当某天的「最差最近匹配差距」突破了交易台的容忍阈值时,值班需要排查灾备 feed 是否丢包、时钟漂移、或被慢路由路径绕了一段。指标按日聚合,对全天两路心跳流跑一次。生产里心跳量动辄数十亿条,所以线性扫描的 O(N + M)(而非 O(N log M))才是把日报压到分钟级而不是小时级的关键。

约束条件

  • 0 ≤ N、M ≤ 1500,其中 N = len(ts_a)、M = len(ts_b)。算法保持 O(N + M) 复杂度,从而在更大规模输入上也能在时限内完成。
  • 0 ≤ ts_a[i] ≤ 1e9 且 0 ≤ ts_b[j] ≤ 1e9;两个数组均严格升序(单条 feed 内无重复值)。
  • 输出为单一整数。当 N >= 1 且 M >= 1 时为 [0, 1e9] 范围内的非负最大配对滞后。
  • 当 ts_a 或 ts_b 为空时返回哨兵 `-1`——不存在可行的配对。
  • `ts_a[i]` 的「配对滞后」定义为 `min_j |ts_a[i] - ts_b[j]|`(到 ts_b 中任意时间戳的最近绝对距离)。输出是这些配对滞后跨 i 的最大值。
  • 若任一输入未排序或单条 feed 内出现重复,行为未定义;调用方负责输入校验。

样例

Case 1 · statement-example: max-paired-lag of 13 across mixed straddle

输入: [[10,20,35,50],[11,22,49,200]]

期望: 13

题面例题:A=[10,20,35,50] 在 B=[11,22,49,200] 上各自的最近距离为 1、2、13、1,最大值即为 13。

Case 2 · visible: every a exactly matches a b returns 0

输入: [[1,5,10],[1,5,10,15]]

期望: 0

A 的每个元素都能在 B 中找到完全相等的对手,最近距离全为 0,最大值仍为 0。

最近提交

还没有提交记录。

编码区

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

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

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

Case 1 · statement-example: max-paired-lag of 13 across mixed straddle

输入: [[10,20,35,50],[11,22,49,200]]

期望: 13

题面例题:A=[10,20,35,50] 在 B=[11,22,49,200] 上各自的最近距离为 1、2、13、1,最大值即为 13。

Case 2 · visible: every a exactly matches a b returns 0

输入: [[1,5,10],[1,5,10,15]]

期望: 0

A 的每个元素都能在 B 中找到完全相等的对手,最近距离全为 0,最大值仍为 0。