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]
广告