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}; //初始化整个数组 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 编程语言查找最小缺失数字的不同方法。