2014-11-08 11 views
-2

以下是我创建的用于查找重复数字的类,但此代码不止一次地打印重复数字,可以有人调整这个代码打印重复的号码只有一次从一组随机数中查找重复数字并在不使用ArrayList,HashMaps或任何其他集合的情况下打印它们

import java.util.Arrays;   

public class DuplicateNumbers{ 

public void printDuplicateNumber(int[] arr){ 

Arrays.sort(arr); 

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

    for(int j=i+1;j<arr.length;j++){ 

     if(arr[i]==arr[j]){ 

     System.out.println("duplicate numbers are "+arr[i]); 

     break; 

    } 

    } 

    } 

} 

}

public class TestDuplicateNumbers{ 

public static void main(String args[]){ 

    int[] arr={44,1,1,2,20,92,64,64,64,24,93,102,1,20131,22,64,1,20131}; 

    DuplicateNumbers dn = new DuplicateNumbers(); 

    dn.printDuplicateNumber(arr); 


} 

}

+3

不,我们不会做你的功课。什么可能是实施这个战略?你有没有想过一个解决方案? – 2014-11-08 14:26:19

+0

哈哈!我想过一个解决方案,但它不会是可行的,如果数组包含一个大的值(例如1002020) – Kapil 2014-11-08 14:36:31

+0

这个解决方案是? – 2014-11-08 14:37:10

回答

1

不改变太多的代码

Arrays.sort(arr); 
    for (int i = 0; i < arr.length; i++) 
     for (int j = i + 1; j < arr.length; j++) 
      if (arr[i] == arr[j]) 
      { 
       while (j < arr.length && arr[i] == arr[j]) 
        j++; 
       System.out.println(arr[i]); 
       i = j; 
      } 
+0

谢谢@ tigerjack,这是我一直在寻找的调整:) – Kapil 2014-11-08 15:20:03

0
Arrays.sort(arr); 

for (int i = 1; i < arr.length - 1; i++) { 
    if ((arr[i - 1] == arr[i]) && (arr[i + 1] != arr[i])) { 
     System.out.println(arr[i]); 
    } 
} 

if (arr[arr.length - 1] == arr[arr.length - 2]) { 
    System.out.println(arr[arr.length - 1]); 
} 
相关问题