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