一、题目描述
给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。
二、输入描述
一个数组。
三、输出描述
去重排序后的数组。
四、解题思路
整体的解题思路:
- 定义一个map,存储每个数字出现的次数,key是数字,value是数字出现的次数;
- 根据题意要用到数组中数字出现的顺序,故使用 LinkedHashMap 来实现插入顺序和遍历顺序一致的 HashMap;
- 单独定义一个函数,根据map的值value进行降序排序;
- 利用Map的entrySet方法,转化为list进行排序;
- 利用Collections的sort方法对list排序;
- 遍历排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储;
- 返回linkedHashMap;
- 遍历排序好的linkedHashMap,输出去重排序后的数组;
五、Java算法源码
package com.guo