Python中找到最频繁元素的程序

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

    • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程