查找最小缺失数字的Java程序


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

问题陈述

给定一个整数流,找出该流中最小缺失的数字。

输入1

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

输出1

4

说明 − 在上面的数组“arr”中,缺少4,并且4是其中最小的。所以4是最小数字。由于序列不是连续的,这里不适用丢失数字原理。


输入2

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

输出2

4

说明 − 在上面的数组“arr”中,缺少4,并且4是其中最小的。所以4是最小数字,并且由于序列是连续的,“4”也是给定数组中丢失的数字。

不同的方法

以下是查找最小缺失数字的方法:

方法1:使用循环语句

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

步骤如下

以下是使用循环语句查找最小缺失数字的步骤:

  • 初始化一个数组。

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

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

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

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

示例

在这个例子中,我们将使用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,因为它是第一个缺失的数字。

步骤如下

以下是使用HashSet查找最小缺失数字的步骤:

  • 初始化数组arr

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

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

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

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

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

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

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

setObjName.contains(value)

示例

在这个例子中,我们将使用Java中的HashSet集合和HashSet的不同内置方法来查找最小缺失数字:

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编程语言查找最小缺失数字的不同方法。

更新于:2024年8月16日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告