2014-02-21 59 views
0

我曾尝试下面的程序,我坚持请协助me.Below是我的程序如何查找重复/重复数组值并将其显示在输出中?

import java.util.ArrayList; 

public class PrintNosandRepetition 

{ 

public static void main(String[] args) 

{ 

int a[] = new int[] {1,3,4,5,6,3,2,4,6,7,9,4,12,3,4,6,8,9,7,6,43,2,4,7,7,5,2,1,3,4,6,311,1}; 

    for (int i=0; i< a.length; i++){ 

    System.out.print(a[i]+ " "); 

    } 
    for (i=1, j<a.length; j++) 


    } 

输出必须是时尚“1重复3次” .etc

+1

如果您规范化数据集,例如先排序吧 – Madbreaks

回答

2

你可以对原始数组进行排序,然后遍历它以逐个扫描元素。这将运行在O(nlogn)

或者你可以使用一个Map<Integer, Integer>它将存储每个数字的出现次数。此解决方案在O(n)中运行,但使用额外的内存。

1
int a[] = new int[] {1,3,4,5,6,3,2,4,6,7,9,4,12,3,4,6,8,9,7,6,43,2,4,7,7,5,2,1,3,4,6,311,1}; 

HashMap occurrenceMap = new HashMap()<Integer, Integer>; 
int number; 
Integer occurrences; //accepts null 

for (int i=0; i<a.length; i++){ 
    number = a[i]; 
    occurrences = occurrenceMap.get(number); 
    if (occurrences == null) { //had no occurrences until this point 
     occurrenceMap.put(number, 1); 
    } 
    else { 
     occurrenceMap.put(number, occurrences+1); 
    } 
} 

//iterate over your map and print the pairs 

现在无法对其进行测试,因此对于任何最终的语法错误表示抱歉。

+0

这是什么HashMap?它有什么作用 ?另外为什么我们使用这个“”? – user3220565

+0

它将一些对象(Key)映射到另一个对象(Value)。创建一个新的HashMap()意味着它将把整数(它们是你数组的元素)映射到其他整数(它们各自的出现次数)。你可以在这里找到一个很好的例子:http://www.tutorialspoint.com/java/java_hashmap_class.htm – lucasnadalutti