1636. 按照频率将数组升序排序 - 力扣(LeetCode)


这个问题可以通过使用 collections.Counter 来统计每个数字的频率,然后按照频率升序排序,如果频率相同则按照数字的值降序排序。以下是 Python 的解决方案:
from collections import Counter
def frequencySort(nums):
# 统计每个数字的频率
count = Counter(nums)
# 根据频率升序排序,如果频率相同,则根据数字值降序排序
sorted_nums = sorted(nums, key=lambda x: (count[x], -x))
return sorted_nums
解释:
-
使用
Counter(nums)统计每个数字出现的频率,返回一个字典,键是数字,值是该数字的频率。 -
使用
sorted函数对nums数组进行排序:-
key=lambda x: (count[x], -x):首先按数字的频率升序排序,如果频率相同则按照数字的值降序排序。 -
count[x]获取数字x的频率。 -
-x使得数字按降序排序(负号表示降序)。
-
示例:
nums = [1, 1, 2, 2, 2, 3]
print(frequencySort(nums)) # 输出:[3, 1, 1, 2, 2, 2]
826

被折叠的 条评论
为什么被折叠?



