LeetCode 2616. 最小化数对的最大差值 C#
原题链接
中等
作者:
hpstory
,
2023-04-11 23:19:02
,
所有人可见
,
阅读 122
C# 代码
public class Solution {
public int MinimizeMax(int[] nums, int p) {
int n = nums.Length;
Array.Sort(nums);
int left = 0, right = nums[^1] - nums[0];
while (left < right){
int mid = left + right >> 1;
// 二分的mid如果不是原数组中的差值,则一定可以在原数组中找到更小的差值
if (Check(mid)) right = mid;
else left = mid + 1;
}
return left;
bool Check(int x){
int ans = 0;
for (int i = 0; i < n - 1; i++){
if (nums[i + 1] - nums[i] <= x){
ans++;
i++;
}
}
return ans >= p;
}
}
}