微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在优先级队列中使用可比性来解决以下问题

如何解决我如何在优先级队列中使用可比性来解决以下问题

Sort Array by Increasing Frequency

这是我完成的代码,但是在遵循可比结构时遇到一些问题,当两个整数的频率相同并且最大的整数将首先出现时,我无法遵循这种情况。

class Solution {
    public int[] frequencySort(int[] nums) {
        PriorityQueue<Pair> queue=new PriorityQueue<Pair>();
        HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
        for(int i=0;i<nums.length;i++)
        {
            if(map.containsKey(nums[i]))
            {
                map.put(nums[i],map.get(nums[i])+1);
            }
            else
            {
                map.put(nums[i],1);
            }
        }
        for(int a:map.keySet())
        {
            queue.add(new Pair(a,map.get(a)));
        }
        int j=0;
        while(!queue.isEmpty())
        {
            nums[j]=queue.peek().number;
            queue.peek().frequency-=1;
            if(queue.peek().frequency==0)
            {
                queue.poll();
            }
            j++;
        }
        return nums;
    }
    public class Pair implements Comparable<Pair>
    {
        int number;
        int frequency;
        public Pair(int number,int frequency)
        {
            this.number=number;
            this.frequency=frequency;
        }
        public int compareto(Pair that)
        {
            if(this.frequency>that.frequency)
            {
                return 1;
            }
            return -1;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。