class Solution:
def maxFrequency(self, nums: List[int], k: int) -> int:
nums.sort()
res = 1
for i in range(len(nums)):
j = i - 1
tmpK = k
while j >= 0 and (tmpK - (nums[i] - nums[j])) >= 0:
tmpK -= (nums[i] - nums[j])
j -= 1
res = max(res, i - j)
return resclass Solution:
def maxFrequency(self, nums: List[int], k: int) -> int:
nums.sort()
n = len(nums)
prefix_sum = [0] * (n + 1)
for i in range(n):
prefix_sum[i + 1] = prefix_sum[i] + nums[i]
res = 1
for i in range(n):
l, r = 0, i
while l <= r:
m = (l + r) // 2
curSum = prefix_sum[i + 1] - prefix_sum[m]
need = (i - m + 1) * nums[i] - curSum
if need <= k:
r = m - 1
res = max(res, i - m + 1)
else:
l = m + 1
return resclass Solution:
def maxFrequency(self, nums: List[int], k: int) -> int:
nums.sort()
total = res = 0
l = 0
for r in range(len(nums)):
total += nums[r]
while nums[r] * (r - l + 1) > total + k:
total -= nums[l]
l += 1
res = max(res, r - l + 1)
return resclass Solution:
def maxFrequency(self, nums: List[int], k: int) -> int:
nums.sort()
l = 0
total = 0
for r in range(len(nums)):
total += nums[r]
if (r - l + 1) * nums[r] > total + k:
total -= nums[l]
l += 1
return len(nums) - l