给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。 

请你返回排序后的数组。

LeetCode 1636. 按照频率将数组升序排序插图

先按照数值降序,再按照频率升序。

class Solution:
    def frequencySort(self, nums: List[int]) -> List[int]:
        # 先按照数值降序
        nums.sort(reverse = True)
        
        # 再按照频率升序    
        dic_nums = collections.Counter(nums)
        # 去重
        dic_nums_fre = list(set(dic_nums.values()))
        dic_nums_fre.sort()
        # print("dic_nums_fre:", dic_nums_fre)
        
        result = []
        for fre in dic_nums_fre:
            for elem in nums:
                if dic_nums[elem] == fre:
                    result.append(elem)
        return result

LeetCode 1636. 按照频率将数组升序排序插图1

更多干货见 OpenCV步步精深

作者 admin

发表回复

您的电子邮箱地址不会被公开。