LeetCode 2779. 数组的最大美丽值 C#
原题链接
中等
作者:
hpstory
,
2023-07-17 10:21:03
,
所有人可见
,
阅读 102
C# 双指针代码
public class Solution {
public int MaximumBeauty(int[] nums, int k) {
int n = nums.Length, j = 0, result = 0;
Array.Sort(nums);
for (int i = 0; i < n; i++){
while (nums[i] - nums[j] > 2 * k) j++;
result = Math.Max(result, i - j + 1);
}
return result;
}
}
C# 二分代码
public class Solution {
public int MaximumBeauty(int[] nums, int k) {
int n = nums.Length, result = 0;
Array.Sort(nums);
for (int i = 0; i < n; i++){
int j = Check(i);
result = Math.Max(result, i - j + 1);
}
return result;
int Check(int x){
int left = 0, right = x;
while (left < right){
int mid = left + right >> 1;
if (nums[x] - nums[mid] <= 2 * k) right = mid;
else left = mid + 1;
}
return left;
}
}
}