Java 程序查找最小缺失数字

javaobject oriented programmingprogramming更新于 2024/8/5 16:42:00

最小缺失数字是元素流或数组中缺失的最小数字。流可能包含也可能不包含连续元素。如果流是连续的,那么最小缺失数字就是流中的丢失数字。在本节中,我们将讨论使用 Java 编程语言在元素流中查找丢失数字的各种方法。

数组中最小缺失数字的示例

示例 1

输入

arr=[1,2,3,5,6,7,8]

输出

4

解释 − 在上面的数组"arr"中,4、7 缺失,4 是其中最小的数字。所以 4 是最小的数字。由于序列不连续,因此这里不适用丢失数字原则。

示例 2

输入

: arr=[1,2,3,5,6,7,8]

输出

4

解释 − 在上面的数组"arr"中,4 缺失,4 是其中最小的。因此 4 是最小的数字,并且由于序列是连续的,"4"也是给定数组中丢失的数字。

数组初始化

datatype arrayName[] = {values};
arrayName[index]=value;

示例

int array[] = {1, 2, 3, 4, 5}; //初始化整个数组
array[0]=1; //初始化特定值

访问数组

  • array[index] 可用于访问数组中索引从 0 开始的元素。

  • array[0] 表示数组中的第一个元素,array[1] 表示第二个元素,依此类推。

现在,我们将使用 Java 程序详细讨论如何找到最小的缺失数字。

方法 1:使用循环语句

在这种方法中,我们用一些值初始化一个数组,然后调用自定义函数"missingNumber",该函数通常通过遍历数组的长度来返回数组中缺失的值。如果数组中没有缺失元素,则返回数组外部第一个元素的值。

算法

  • 初始化数组。

  • 声明一个函数 missingNumber(arr, n)。

  • 从 0 循环到 n,并与数组中的元素匹配。

  • 我们将通过循环检查数组中是否存在所有元素。如果我们发现数组中不存在任何元素,则返回它。

  • 在主方法中调用该函数并打印函数返回的值

示例

在此示例中,我们将使用 java 提供的 for 循环语句来查找最小的缺失数字。

import java.util.*;
public class Main {
   public static void main(String[] args) {
      int[] arr = { 0, 1, 2, 3, 4, 5, 8,11 };
      int missing_number = missingNumber(arr, arr.length);
      System.out.println("The smallest missing number " + missing_number);
   }
   static int missingNumber(int[] arr, int n) {
      int i;
      for (i = 0; i < n; i++) {
         if (arr[i] != i) {
            return i;
         }
      }
      return i;
   }
}

输出

The smallest missing number 6

方法 2:在 Java 中使用 HashSet

在这种方法中,我们用一些值初始化一个数组,然后调用自定义函数"missingNumber",此函数通常通过将所有元素存储在 HashSet 中来返回数组中缺失的值,然后我们遍历数组的长度并检查集合中是否存在每个值,如果不存在,则返回该值,否则如果每个元素都存在,最后我们返回 n,因为它是第一个缺失的数字。

算法

  • 初始化一个数组 arr。

  • 声明一个函数 missingNumber(arr, n)。

  • 声明一个哈希集并使用 add() 将数组的所有元素添加到集合中。

  • 循环遍历 0 到 n,使用 contains() 查找哈希集中是否存在该值,如果值不存在则返回它。

  • 在主方法中调用该函数并通过该方法打印返回值。

HashSet − Hashset 是一个无序的对象集合,不允许重复元素。

HashSet<datatype> objName = new HashSet<datatype>();

contains() − 此方法检查集合中是否存在某个值并返回一个布尔值。

setObjName.contains(value)

示例

在此示例中,我们将使用 Java 中的 HashSet 集合和 hasset 的不同内置方法并查找最小的缺失数字。

import java.util.HashSet;
public class Main {
   public static void main(String[] args) {
      int[] arr = { 0, 1, 2, 3, 4, 5, 8,11 };
      int missing_number = missingNumber(arr, arr.length);
      System.out.println("The smallest missing number is " + missing_number);
   }
   static int missingNumber(int[] arr, int n) {
      HashSet<Integer> set = new HashSet<>();
      for (int i = 0; i < n; i++) {
         set.add(arr[i]);
      }
      for (int i = 0; i < n; i++) {
         if (!set.contains(i)) {
            return i;
         }
      }
      return n;
   }
}

输出

The smallest missing number is 6

因此,在本文中,我们讨论了使用 Java 编程语言查找最小缺失数字的不同方法。


相关文章