使用comparator进行自定义排序
如果使用数组统计频次排序后顺序乱了,只能用hashmap
public class match {
public static void main(String[] args) {
Solution666 s=new Solution666();
int[] x=new int[]{1,1,2,2,2,3};
System.out.println(Arrays.toString(s.frequencySort(x)));
}
}
class Solution666 {
public int[] frequencySort(int[] nums) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
}
List<Integer> list=new ArrayList<>();
for(int num:nums){
list.add(num);
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int count1=map.get(o1);
int count2=map.get(o2);
return count1!=count2?count1-count2:o2-o1;
}
});
int[] res=new int[list.size()];
for(int i=0;i<list.size();i++){
res[i]=list.get(i);
}
return res;
}
}