LeetCode 1552 - 两球之间的磁力
题目
给定一个数组 position 表示球的位置,以及整数 m 表示要放的球数。把 m 个球放入这些位置,使任意两球间的最小磁力(距离)最大。返回这个最大值。
解题思路
- 先对位置排序。
- 对“最小间距”进行二分搜索:假设最小间距为
d,检查能否放下m个球。 - 检查方式:从最左位置开始贪心放球,尽量保持相邻球间距 ≥
d,统计能放下的球数。
如果能放下 m 个球,说明 d 可行,尝试更大;否则缩小。
代码实现(Python)
1 | from typing import List |
复杂度分析
- 时间复杂度:
O(n log D),其中D是最大距离范围。 - 空间复杂度:
O(1)(忽略排序的额外空间)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Never Settle!
评论