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]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP