Skip to content

Latest commit

 

History

History
42 lines (30 loc) · 1.09 KB

File metadata and controls

42 lines (30 loc) · 1.09 KB

1636. Sort Array by Increasing Frequency

Leetcode link

题目简介

本题要求我们对数组排序,但是排序的规则有两个:

  1. 数组中出现次数少的数要排在出现次数多的数后面
  2. 如果两数出现次数相同,则按照降序排序

解题思路

为了记录每个数字的出现次数,我们需要建立一个数字与出现次数的映射

在 js 中,我们选用 Map 这个数据结构

统计完了出现次数之后,我们只需要按照题目的要求自定义排序方法就好,详见代码

Javascript

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var frequencySort = function(nums) {
    const map = new Map();
  	// 建立映射
    for(const num of nums) {
        if(map.has(num)) {
            map.set(num, map.get(num) + 1)
        } else {
            map.set(num, 1)
        }
    }
		
  	// 自定义排序规则:先按照出现次数升序;如果出现次数相同则降序排列
    return nums.sort((a, b) => map.get(a) - map.get(b) || b-a)
};