Python中找到最频繁元素的程序
假设我们有一个数组nums和另一个值k。在一个操作中,我们可以选择一个nums的索引并将该索引处的元素增加1。我们必须在执行最多k次操作后找到最大的元素频率。
因此,如果输入类似于nums = [8,3,6],k = 9,则输出将为3,因为我们可以通过将3增加5,将6增加2来将其更新为[8,8,8],所以在7个操作后我们具有最大频率3。
要解决此问题,我们将按照以下步骤进行−
- 对列表nums进行排序
-
left:=0,right:=1
-
当right < nums的大小时,执行以下操作
- k:= k – (nums[right] – nums[right-1]) * (right – left)
-
如果k < 0,则
- k:= k + nums[right] – nums[left]
-
left:= left + 1
- k:= k + nums[right] – nums[left]
-
right:= right + 1
-
返回right – left
例子
让我们看以下实现以更好地理解−
def solve(nums, k):
nums.sort()
left = 0
right = 1
while right < len(nums):
k -= (nums[right] - nums[right-1]) * (right - left)
if k < 0:
k += nums[right] - nums[left]
left += 1
right += 1
return right - left
nums = [8,3,6]
k = 9
print(solve(nums, k))
输入
[8,3,6], 9
输出
3