Java 在这种情况下,如何从数组中获取N个唯一的项。。。。? 总结
这两天来,我一直在试图帮助某人解决这个问题,虽然我可以使用嵌套for循环强制执行它,但我正在尝试将它简化为两个非嵌套循环 以下是条件:Java 在这种情况下,如何从数组中获取N个唯一的项。。。。? 总结,java,algorithm,dictionary,heap,Java,Algorithm,Dictionary,Heap,这两天来,我一直在试图帮助某人解决这个问题,虽然我可以使用嵌套for循环强制执行它,但我正在尝试将它简化为两个非嵌套循环 以下是条件: 使用映射存储项的第一次外观索引和数组中的外观数 方法的调用方必须能够指定要获取的前N个唯一元素 不允许有超过2个循环,而且它们应该不嵌套 我的尝试 public void getHeapUnique(E[]数组,int n){ Map Map=newhashmap(); PriorityQueue heap=new PriorityQueue(); 整数计
- 使用映射存储项的第一次外观索引和数组中的外观数
- 方法的调用方必须能够指定要获取的前N个唯一元素
- 不允许有超过2个循环,而且它们应该不嵌套
public void getHeapUnique(E[]数组,int n){
Map Map=newhashmap();
PriorityQueue heap=new PriorityQueue();
整数计数=0;
布尔唯一=真;
for(int i=0;i
问题
因此,我相信堆数据结构可能是简化或提供我不知道的行为的关键,而这些行为将解开这个谜团。实现堆会提供我不知道的特殊能力吗 我特别被告知在地图中存储第一次出现的数字索引和出现的数字。我还被告知不要在数组上循环,而是在映射上循环。我这样做没有问题,但我的问题是,我只能想象一种确定项目 如果使用嵌套循环检查贴图关键帧集中的每个关键帧,则已出现:
...
for (int i = 0; i < arr.length;i++)
{
boolean unique = true;
for (Integer index : map.keySet())
{
if (arr[i] == arr[index])
{
unique = false;
int incr = map.get(index) + 1;
map.put(index, incr);
break;
}
}
if (unique)
{
map.put(i, 1);
count++;
if (count == n)
{
break;
}
}
}
...
。。。
对于(int i=0;i
我错过了什么
...
for (int i = 0; i < arr.length;i++)
{
boolean unique = true;
for (Integer index : map.keySet())
{
if (arr[i] == arr[index])
{
unique = false;
int incr = map.get(index) + 1;
map.put(index, incr);
break;
}
}
if (unique)
{
map.put(i, 1);
count++;
if (count == n)
{
break;
}
}
}
...