java - 在小于 O(n^2) 的数组中查找数字重复的次数

标签 java algorithm complexity-theory

我写的示例代码。但这是 n^2

int a[]={1,4,1,5,2,2,4,3,4,1};
int b[][]=new int[5][2];
int i,j,k=0,count=1;
boolean temp=false;
for(i=0;i<a.length;i++)
{
    for(j=0;j<5;j++)
    {
        if(a[i]==b[j][0])
        {   temp=true;
            b[j][1]++;
            break;
        }
    }

    if(temp==false)
    {
        b[k][0]=a[i];
        b[k][1]=1;
        k++;    
    }
    temp=false;
}
for(i=0;i<5;i++)
{
    for(j=0;j<1;j++)
    {
    System.out.println(b[i][j]+" is repeated "+b[i][j+1]+" times");
    }
}

最佳答案

这是伪代码的解决方案:

Map<Int, Int> histogram;
for(number in array) {
    histogram[number]++;
}

现在 histogram[somenumber] 包含数字在数组中的次数 - 在 O(n) 中假设 Map 看起来在 O(1)

中添加项目

关于java - 在小于 O(n^2) 的数组中查找数字重复的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5742551/

相关文章:

java - 防止 webview 加载某些 URL

algorithm - 如何在 1 秒内找到数独游戏的所有解决方案(计数)?

java - 大 O 符号用于访问链表和二进制搜索中的中间元素?

c++ - 在以下情况下,我可以避免在 C++ 中复制 unordered_map 吗?

java - 决定 Java 内存模型的因果关系要求是否容易处理?

hashtable - 使用巨大的哈希表在多项式时间内解决数独

sql - GroupBy 操作的渐近复杂度是多少?

java - 如何更改memcached服务器除11211以外的端口号

java - 文件上传拦截器未在 Struts2 Maven 中上传任何文件

java - 自定义对话框中的进度条