题目:
给你一个整数数组 nums
,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。
思路:创建一个哈希表来记录数组中每个数的频率,再通过sort函数加lambda匿名函数来处理即可,难点在于代码表示。
代码实现:
cns = Counter(nums) #Counter函数是创建一个哈希表的子表,用来记录数组或字符串每个元素的频率和值
nums.sort(key=lambda x:(cns[x],-x)) #(cns[x],-x)是先用cns来判断,相同后再降序
return nums
总结:
思路很清晰,代码简短,但是一些函数的使用小困难,一是需要利用到Counter()函数进行哈希记录,二是lambda函数的运用,利用()来进行俩次判断