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

كيف تجد في مجموعة من الأعداد الصحيحة في Java الأعداد المفقودة بين 1 و n؟

如果在包含数字值序列的整数数组中缺少单个数字,则可以基于数字总和或基于数字的异或找到它。

基于数字的总和 -

  • 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("عدم وجود عدد: "+missingNumber);
   }
}

نتيجة الخروج

ادخل قيمة n:
5
ادخل (n-1) أرقام:
1
2
4
5
الرقم المفقود هو: 3

استخدم عملية XOR لبحث عن الرقم المفقود - طريقة أخرى باستخدام XOR.

  • ابحث عن XOR لكل الأرقام.

  • ابحث عن XOR لكل الأرقام في الصف.

  • ثم ابحث عن XOR لنتائجين.

مثال

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 xorArray = inpuArray[0];
      // XOR لعدد عناصر الصف
      for(int i=1; i<=n-1; i++) {
         xorArray = xorArray ^ i;
      }
      int xorAll = inpuArray[0];
      // حساب XOR لعدد عناصر الصف
      for(int i=1; i<=n+1; i++) {
         xorAll = xorAll ^ i;
      }
      int missingNumber = xorArray ^ xorAll;
      System.out.println("عدم وجود عدد: "+missingNumber);
   }
}

نتيجة الخروج

ادخل قيمة n:
5
ادخل (n-1) أرقام:
1
2
4
5
عدم وجود عدد: 3

مفضل لديك