跨源行情最差最近匹配配对滞后
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_a 与 ts_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) == 0或len(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。最近匹配距离分别为:10 距 11 为 1;20 距 22 为 2;35 介于 22(差 13)与 49(差 14)之间,最近为 13;50 距 49 为 1。这些差距的最大值为 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 可见样例;服务端提交会运行可见样例和隐藏测试。
默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。
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。