题解
核心想法
将两组位置排序。用双指针遍历机台与“当前最近的传感器”。
对每个机台 x,沿着传感器指针从 j 前进,只要传感器 sensor[j+1] 更靠近 x(即满足 ∣sensor[j+1]−x∣≤∣sensor[j]−x∣),就把 j 加一。这样就能在线性时间内找到该机台到最近传感器的距离 d=min(∣x−sensor[j]∣,∣x−sensor[j±1]∣),把所有机台的最近距离的最大值作为答案。
正确性说明
机台位置递增时,离它最近的传感器指针不会后退:
若上一台机台的最近传感器是 sensor[j],当机台移动到更右边的位置 x′ 时,sensor[j−1] 不可能变得更近(两者都更远且 sensor[j−1] 更劣),因此最近传感器的下标是单调不减的。于是一次从左到右扫描即可为每个机台找到最近传感器,最终答案就是