题目
1636. Sort Array by Increasing Frequency
解题方法
先用collections.Counter计算频数存入字典,然后用sorted方法对字典中的键根据值顺序排序,第二关键字设置为键的倒序,返回一个元组组成的列表temp,其中每个元组的第一位是成员值,第二位是成员出现的次数,从头至尾遍历temp写元素即可。
时间复杂度:O(nlogn)
空间复杂度:O(n)
代码
class Solution:
def frequencySort(self, nums: List[int]) -> List[int]:
dic = collections.Counter(nums)
temp = sorted(dic.items(), key=lambda d:(d[1],-d[0]))
nums = []
for i in range(len(temp)):
times = temp[i][1]
while times:
nums.append(temp[i][0])
times -= 1
return nums