如何解决我如何在优先级队列中使用可比性来解决以下问题
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 举报,一经查实,本站将立刻删除。