2016-03-03 137 views
-1

我的程序是:在一個數組中,1-10個數字被存儲,一個數字缺失,你如何找到它?查找數組中缺少的元素

我試過下面的代碼,但它沒有給出正確的輸出。

public class MissingNumber { 

    public static void main(String[] args) { 

     int arr[] = { 1, 2, 3, 4, 5, 6, 7, 9, 9, 10 }; 
     System.out.println(arr.length); 

     int arr2[] = new int[10]; 

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

      arr2[i] = i + 1; 
      System.out.println("second array is : " + arr2[i]); 
     } 

     //compare two arrays i.e arr and arr2 

     for(int a=0;a<arr.length;a++){ 
      for(int b=0;b<arr2.length;b++){ 
       if(arr[a]==arr2[b]){ 
        break; 
       } 
       else{ 
        System.out.println("missing element is : "+arr[a]); 
       } 

      } 
     } 

    } 

} 

我想要的是缺少的數字。任何人都可以讓我知道我錯了哪裏?

+0

爲什麼不乾脆:如果(ARR [A]! =(a + 1))? – Stultuske

+0

它的工作。謝謝 ! – naazneen3264

+1

@ naazneen3264問題並不清楚,你可能甚至不需要一個循環來找到「缺失」的數字。你是否總是從1開始,並且應該按照順序遞增? – user3437460

回答

0

一旦與2個數組匹配,您就從循環中突圍出來。從你的邏輯的角度,將其更改爲(你不需要嵌套的循環):

if(arr[a]!=arr2[a]){ 
    System.out.println("missing element is : "+arr[a]); 
    break; 
} 

但如果這是肯定的數組總是按順序從1日起,您不需要再陣列。只要做到這一點是:

for(int x=0; x<arr.lengthl x++){ 
    if(arr[x] != (x+1)){ 
     System.out.println("Missing element is " + (x+1)); 
     break; 
    } 
} 
+0

它不工作。但第二部分正在工作。其實我採取了2陣列,並試圖找到缺失的元素。 – naazneen3264

0

你剛剛打破的代碼當u找到正確的匹配:

只需使用以下命令:

if(arr[a] != arr2[b]){ 
    System.out.println("missing element is : "+arr[a]); 
    break; 
} 

或者只是替換休息與繼續

+0

Caspar:您認爲這種印刷方式在哪種情況下會達到? – Stultuske

+0

是的,我意識到,我寫了一秒後:p –

0

刪除第二個數組,您不需要它,並且一旦將元素添加到原始數組中,它可能只會導致錯誤。

基本上,通過更換您的測試:

if(arr[a] != (a+1)){ System.out.println("Missing element: " + (a+1)); } 

不要跳出來,因爲可能會有更多的元素缺失。

0

這是行不通的,因爲你是循環通過arr尋找,是不是在arr2任何價值,並在arr每個元素arr2 IS。你想要arr2作爲外部循環。

0

我的程序是:在一個數組中存儲1-10個數字,一個數字缺失,你如何找到它?

它也可以只使用數組本身來完成。請注意,只有在這個問題中指定的其中一個數字丟失的情況下才有效。

例如

令陣列array = {1,2,3,4,5,6,7,9,9,10}

現在讓我們假設Array並不總是被排序,因此第一步是對數組進行排序。

Arrays.sort(array); 

下一步是簡單地在任何給定位置檢查數組的值,如果該value != location + 1則認爲是缺號。

for(int x = 0; x < array.length; x++) { 
    if(array[x] != x + 1) { 
     System.out.println("Missing Entry: " + (x+1)); 
     break; 
    } 
} 
1

檢查下面的代碼,如果輸入數組是任何順序或改組滿耳

公共類MissingNumber {

public static void main(String[] args) { 

    int arr[] = {1, 2, 3, 4, 5, 6, 7, 9, 9, 10}; 
    System.out.println(arr.length); 

    int arr2[] = new int[10]; 

    for (int i = 0; i < arr2.length; i++) { 
     arr2[i] = i + 1; 
    } 
    for (int a = 0; a < arr2.length; a++) { 
     int count = 0; 
     for (int b = 0; b < arr.length; b++) { 
      if (arr2[a] == arr[b]) { 
       break; 
      } else { 
       count++; 
      } 
     } 
     if (arr2.length == count) { 
      System.out.println("missing element is : " + arr2[a]); 
     } 
    } 

} 

}