English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
如果在包含数字值序列的整数数组中缺少单个数字,则可以基于数字总和或基于数字的异或找到它。
基于数字的总和 -
n个序号的总和为[n *(n + 1)] / 2。使用此方法获得n个数字的和。
添加数组中的所有元素。
从n个数字的总和中减去数组中数字的总和。
import java.util.Scanner; public class MissingNumber { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入n值: "); int n = sc.nextInt(); int inpuArray[] = new int[n]; System.out.println("输入(n-1)个数字: "); for(int i=0; i<=n-2; i++) { inpuArray[i] = sc.nextInt(); } //寻找缺失的数字 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("Número falta es: ");+missingNumber); } }
Resultado de la salida
Ingrese el valor de n: 5 Ingrese (n-1) números: 1 2 4 5 El número faltante es: 3
Usar la operación XOR-Otra manera de encontrar el número faltante es usar XOR.
Encontrar el XOR de todos los números.
Encontrar el XOR de todos los números del array.
Luego encuentre el XOR de los dos resultados.
import java.util.Scanner; public class MissingNumber { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Ingrese el valor de n:"); int n = sc.nextInt(); int inpuArray[] = new int[n]; System.out.println("Ingrese (n-1) números: "); for(int i=0; i<=n-2; i++) { inpuArray[i] = sc.nextInt(); } //Encontrar el número faltante int xorArray = inpuArray[0]; //XOR de elementos del array for(int i=1; i <= n-1; i++) { xorArray = xorArray ^ i; } int xorAll = inpuArray[0]; //Operación XOR de elementos del array for(int i=1; i <= n+1; i++) { xorAll = xorAll ^ i; } int missingNumber = xorArray ^ xorAll; System.out.println("Número falta es: ");+missingNumber); } }
Resultado de la salida
Ingrese el valor de n: 5 Ingrese (n-1) números: 1 2 4 5 Número falta es: 3