Java 寻找最小缺失数

Java 寻找最小缺失数

最小缺失数 是指在一个元素流或数组中缺失的最小数字。该流可能包含连续或非连续的元素。如果流是连续的,那么最小缺失数就是流中的遗失数字。在本部分中,我们将讨论使用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}; //Initializing whole array
array[0]=1; //Initializing a particular value

访问数组

  • array[index]用于访问数组中的元素,其中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)。
  • 声明一个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编程语言查找最小缺失数字的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程