leetcode 1636. Sort Array by Increasing Frequency (python)

612 阅读1分钟

描述

Given an array of integers nums, sort the array in increasing order based on the frequency of the values. If multiple values have the same frequency, sort them in decreasing order.

Return the sorted array.

Example 1:

Input: nums = [1,1,2,2,2,3]
Output: [3,1,1,2,2,2]
Explanation: '3' has a frequency of 1, '1' has a frequency of 2, and '2' has a frequency of 3.
	

Example 2:

Input: nums = [2,3,1,3,2]
Output: [1,3,3,2,2]
Explanation: '2' and '3' both have a frequency of 2, so they are sorted in decreasing order.

Example 3:

Input: nums = [-1,1,-6,4,5,-6,1,4,1]
Output: [5,-1,4,4,-6,-6,1,1,1]

Note:

  • 1 <= nums.length <= 100
  • -100 <= nums[i] <= 100

解析

根据题意,按照每个元素的出现频率从小到大排列,对于出现同样频率的元素,按照降序排列,只需要用内置的 sorted ,按照元祖 (频率,元素的相反数) 排序即可。

解答

class Solution(object):
    def frequencySort(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        return sorted(nums, key=lambda x:(nums.count(x),-x))
        	
        	      
		

运行结果

Runtime: 36 ms, faster than 86.72% of Python online submissions for Sort Array by Increasing Frequency.
Memory Usage: 13.3 MB, less than 96.09% of Python online submissions for Sort Array by Increasing Frequency.

原题链接:leetcode.com/problems/so…

您的支持是我最大的动力