English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come trovare il numero mancante in un array dato da 1 a n in Java?

Se manca un singolo numero in un array di interi che contiene una sequenza di valori numerici, può essere trovato basandosi sulla somma dei numeri o sull'esclusione XOR dei numeri.

Sulla somma dei numeri -

  • La somma dei numeri consecutivi è [n * (n + 1)] / 2. Usa questo metodo per ottenere la somma di n numeri.

  • Aggiungi tutti gli elementi dell'array.

  • Sottrai la somma dei numeri totali da quella degli elementi dell'array.

Esempio

import java.util.Scanner;
public class MissingNumber {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci il valore di n: ");
      int n = sc.nextInt();
      int inpuArray[] = new int[n];
      System.out.println("Inserisci (n-1) numeri: ");
      for(int i=0; i<=n-2; i++) {
         inpuArray[i] = sc.nextInt();
      }
      // Cerca il numero mancante
      int sumOfAll = (n * (n + 1)) / 2;
      int sumOfArray = 0;
      for(int i=0; i<=n-2; i++) {
         sumOfArray = sumOfArray + inpuArray[i];
      }
      int missingNumber = sumOfAll - sumOfArray;
      System.out.println("Numero mancante: "+missingNumber);
   }
}

Risultato di output

Inserisci il valore di n:
5
Inserisci (n-1) numeri:
1
2
4
5
Il numero mancante è: 3

Un altro metodo per trovare il numero mancante utilizzando l'operazione XOR è utilizzare XOR.

  • Trova l'XOR di tutti i numeri.

  • Trova l'XOR di tutti i numeri dell'array.

  • Poi trova l'XOR dei due risultati.

Esempio

import java.util.Scanner;
public class MissingNumber {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci il valore di n:");
      int n = sc.nextInt();
      int inpuArray[] = new int[n];
      System.out.println("Inserisci (n-1) numeri:");
      for(int i=0; i<=n-2; i++) {
         inpuArray[i] = sc.nextInt();
      }
      //Cerca il numero mancante
      int xorArray = inpuArray[0];
      //XOR degli elementi dell'array
      for(int i=1; i<=n-1; i++) {
         xorArray = xorArray ^ i;
      }
      int xorAll = inpuArray[0];
      //Operazione XOR degli elementi dell'array
      for(int i=1; i<=n+1; i++) {
         xorAll = xorAll ^ i;
      }
      int missingNumber = xorArray ^ xorAll;
      System.out.println("Numero mancante: "+missingNumber);
   }
}

Risultato di output

Inserisci il valore di n:
5
Inserisci (n-1) numeri:
1
2
4
5
Numero mancante: 3