力扣1636. 按照频率将数组升序排序

知识浅谈 知识浅谈 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

题意

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

请你返回排序后的数组。

 

示例 1:

输入:nums = [1,1,2,2,2,3]
输出:[3,1,1,2,2,2]
解释:'3' 频率为 1,'1' 频率为 2,'2' 频率为 3 。
示例 2:

输入:nums = [2,3,1,3,2]
输出:[1,3,3,2,2]
解释:'2' 和 '3' 频率都为 2 ,所以它们之间按照数值本身降序排序。
示例 3:

输入:nums = [-1,1,-6,4,5,-6,1,4,1]
输出:[5,-1,4,4,-6,-6,1,1,1]  

提示:

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

题解

class Solution {
    public int[] frequencySort(int[] nums) {
        Map<Integer,Integer>map = new TreeMap<Integer,Integer>();
        List<A> list = new ArrayList<A>();
        int n = nums.length;
        for(int i:nums){
            map.put(i,map.getOrDefault(i,0)+1);
        }
        for(int key:map.keySet()){
            list.add(new A(key,map.get(key)));
        }
        Collections.sort(list,new Comparator<A>(){
            public int compare(A a1,A a2){
                if(a1.value!=a2.value) return a1.value-a2.value;
                else return a2.key-a1.key;
            }
        });
        int index=0;
        int[] res = new int[n];
        for(A a1:list){
            for(int i=0;i<a1.value;i++){
                res[index++] = a1.key;
            }
        }
        return res;
    }
}

class A{
    int key;
    int value;
    public A(int key,int value){
        this.key = key;
        this.value = value;
    }
}

img

...全文

相关推荐

leetcode题库-leet-code-questions-8:20个leet代码问题和我的解决方案

leetcode题库leet-code-questions-8 20个leet代码问题和我的解决方案 1502 可以从序列进行算术演进 1503 按奇偶校验 II 对数组进行排序 1504 删除字符串中所有相邻的重复项 1505 反转字符串 1506 矩阵中 K 最弱的行 1507 按 1 位的数量对整数进行排序 1508 用堆栈操作计算 159 数组在 Leetcode Bank 1510 不包括最低和最高工资的平均工资 1511 不能吃午餐的学生人数 1512 相对排序数组 1513 到一个字符的最短距离 1514 找到可以由字符组成的单词 929 唯一的电子邮件地址 1636 增加频率排序数组 1114按顺序打印 1030 个按距离顺序排列的矩阵单元 1200 最小绝对差 463 岛周长 237 删除链表中的节点

等到风景都看透⊙∀⊙?

《模式识别与数据挖掘》配套PPT课件

《模式识别与数据挖掘》配套PPT课件

Bryan Ding

科技成果转化项目进场交易前,评估备案环节需要准备哪些材料?_8.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核

人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核

Bryan Ding

跨境电商供应链管理(AIGC版)课件+教案+参考答案

跨境电商供应链管理(AIGC版)课件+教案+参考答案

Bryan Ding
评论
收藏 已收藏
分享
返回顶部
知识浅谈
知识浅谈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
知识浅谈(万道面试题) 19,925 成员 99 内容