华为OD 数组去重和排序(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明
你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。
B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。
我将持续更新最新题目

获取更多免费题目可前往夸克网盘下载,请点击以下链接进入:

我用夸克网盘分享了「华为OD题库Java.zip」,点击链接即可保存。打开「夸克APP」

链接:https://pan.quark.cn/s/f59329c0173b

提取码:3p8Y

题目类型:数组
题目描述:

给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。

输入描述:

一个数组

输出描述:

去重排序后的数组

示例 1:

输入

1,3,3,3,2,4,4,4,5

输出

3,4,1,2,5

备注

数组大小不超过100 数组元素值大小不超过100

思路分析

又一个哈希表的排序,这个排序相对简单,只需要对value降序排,key读入的顺序,就是第一次出现索引的先后顺序。

HashMap的排序,需要先把HashMap转为list,再对list进行排序。

参考代码:

java 复制代码
import java.util.*;

public class arraySetSort {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] str = in.nextLine().split(",");
        int[] ints = new int[str.length];
        for (int i = 0; i < ints.length; i++) {
            ints[i] = Integer.parseInt(str[i]);
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < ints.length; i++) {  // 统计数字出现的频次
            map.put(ints[i], map.getOrDefault(ints[i], 0) + 1);
        }
        // Map按value排序,先将map转为list,再排序list
        List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());
        list.sort((o1, o2) -> o2.getValue() - o1.getValue());
        for (int i = 0; i < list.size(); i++) {
            Map.Entry<Integer, Integer> entry = list.get(i);
            if (i != list.size() - 1) {
                System.out.print(entry.getKey() + ",");
            } else {
                System.out.println(entry.getKey());
            }
        }
    }
}
相关推荐
minji...2 分钟前
C++ 详细讲解vector类
开发语言·c++
LiuYaoheng5 分钟前
【Android】View 的基础知识
android·java·笔记·学习
勇往直前plus13 分钟前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵13 分钟前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
小鸡脚来咯16 分钟前
一个Java的main方法在JVM中的执行流程
java·开发语言·jvm
江团1io017 分钟前
深入解析三色标记算法
java·开发语言·jvm
天天摸鱼的java工程师25 分钟前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
m0_7381207228 分钟前
CTFshow系列——PHP特性Web97-100
开发语言·安全·web安全·php·ctfshow
你我约定有三29 分钟前
java--泛型
java·开发语言·windows
杨杨杨大侠37 分钟前
第3章:实现基础事件总线
java·github·eventbus