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 中,則

      • 將 i 插入到 mp[x] 的末尾

    • 否則 mp[x] := 一個僅包含一個元素 i 的列表

  • ans:= 一個新的列表

  • 對於按鍵排序的每個 i 在 mp 中,執行以下操作:

    • 對於按反序排序的每個 j 在列表 mp[i] 中,執行以下操作:

      • 將 j 插入到 ans 中 i 次

  • 返回 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]

更新於: 2021年5月17日

2K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.