2014-11-08 10 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]); 
} 
相關問題