按Python中元素增加的频率对数组进行排序的程序

按Python中元素增加的频率对数组进行排序的程序

假设我们有一个具有一些元素的数组,元素可能会多次出现。我们必须按它们的频率排序,以便元素按出现较少次数的顺序出现,依此类推。

所以,如果输入是nums = [1,5,3,1,3,1,2,5],那么输出将是[2, 5, 5, 3, 3, 1, 1, 1]

要解决此问题,我们将遵循以下步骤−

  • mp:一个新的映射

  • 对于nums中的每个不同元素i,做以下操作

    • x:nums中i的数量

    • 如果x存在于mp中,则

      • 在mp[x]的末尾插入i
    • 否则,mp[x]:仅具有一个元素i的列表

  • ans:一个新的列表

  • 按键对mp进行排序的每个i,做以下操作

    • 对于反向排序的mp[i]列表中的每个j,做以下操作
      • 将j,i的数量插入到ans中
  • 返回ans

示例(Python)

让我们看一下以下实现,以获得更好的理解−

def solve(nums):
   mp = {}
   for i in set(nums):
      x=nums.count(i)
      try:
         mp[x].append(i)
      except:
         mp[x]=[i]
   ans=[]

   for i in sorted(mp):
      for j in sorted(mp[i], reverse=True):
         ans.extend([j]*i)
   return ans

nums = [1,5,3,1,3,1,2,5]
print(solve(nums))

输入

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

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程