2016-03-03 110 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]); 
     } 
    } 

} 

}