Python中的前K个常见元素

假设我们有一个非空的整数数组。我们必须返回第k个最频繁的元素。因此,如果元素为[1,1,1,1,2,2,3,3,3]且k = 2,则结果将为

正式的功能应该-

  • 如果存在i,j,k,则返回true

  • 因此,如果0≤i <j <k≤n-1,则arr [i] <arr [j] <arr [k]否则返回false。

为了解决这个问题,我们将遵循以下步骤-

  • num_freq =一个空的映射,freq_list:=一个空的映射

  • 对于数字中的每个元素

    • 如果我不在num_freq中,则num_freq [i]:= 1,否则将num_freq [i]增加1

  • 对于num_freq映射中的每个键值对

    • 如果freq_list中不存在value,则freq_list [value]:=具有[key]的列表,否则将key插入freq_list [value]数组

  • res:=空列表

  • 对于我:=数字长度降至0

    • 如果我在freq_list中,则将freq_list [i]的元素添加到res中

    • 如果res的长度> = k,则中断

  • 返回结果

让我们看下面的实现以更好地理解-

示例

class Solution(object):

   def topKFrequent(self, nums, k):

      number_frequency = {}

      frequency_list ={}

      for i in nums:

         if i not in number_frequency:

            number_frequency[i] = 1

         else:

            number_frequency[i] += 1

      for key,value in number_frequency.items():

         if value not in frequency_list:

            frequency_list[value] = [key]

         else:

            frequency_list[value].append(key)

      result = []

      for i in range(len(nums),0,-1):

         if i in frequency_list:

            result.extend(frequency_list[i])

         if len(result) >=k:

            break

      return result

ob1 = Solution()print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2))

输入值

[1,1,1,1,2,2,3,3,3]

2

输出结果

[1, 3]

以上是 Python中的前K个常见元素 的全部内容, 来源链接: utcz.com/z/321590.html

回到顶部