刷题专栏(十七):丢失的数字

简介: 刷题专栏(十七):丢失的数字

前言

刷题专栏到目前已经是第十七篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道《丢失的数字》一题,是关于处理数组的一道题。

在处理数组时,无非就是排序、获取最大值、获取最小值等等的操作。

此题也是与这些操作相关,接下来就一起来看一下吧。

image.png

算法题:丢失的数字

根据此题目的描述来看,是要从一个无序的整数数组中,找出零到整数数组长度的区间中,找出在整数数组中不存在的数字。

如果整数数组的长度为n,则区间就是[0, n]。

根据示例中的例子来看,整数数组为[3,0,1],则区间为[0,3]。

根据这个示例,其实是比较简单的。

逻辑也比较清晰,可以通过遍历来分别将所有的值遍历一下,因为在示例中,只会有一个丢失的数字。

所以只需要遍历后,递增的数字进行比对,如果发现没有的情况下,就直接返回该值即可。

在写代码之前,我原本打算通过双重循环来判断。

后来想了想,感觉还是太耗费性能,于是使用了Set集合。

接下来看一下代码吧。

代码展示

代码使用Set集合和数组循环遍历方法解决。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.missingNumber(new int[]{3,0,1}));
    }
    public int missingNumber(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int n : nums){
            set.add(n);
        }
        //循环
        for (int i = 0; i < nums.length + 1; i++) {
            if(!set.contains(i)){
                return i;
            }
        }
        return 0;
    }
}

代码执行结果

代码执行结果一般,还是需要继续完善一下。

image.png

总结

本题主要考察的是关于数组的元素遍历,大家学会了吗?

目录
相关文章
|
6月前
|
算法 Java
刷题专栏(二十八):找到所有数组中消失的数字
刷题专栏(二十八):找到所有数组中消失的数字
118 4
|
6月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
131 2
|
6月前
|
算法
刷题专栏(三十):数组拆分 I
刷题专栏(三十):数组拆分 I
124 2
|
6月前
|
算法
刷题专栏(二十一):区域和检索 - 数组不可变
刷题专栏(二十一):区域和检索 - 数组不可变
112 1
|
6月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
53 0
|
6月前
|
算法
刷题专栏(十八):第一个错误的版本
刷题专栏(十八):第一个错误的版本
50 0
|
6月前
|
算法
刷题专栏(十六):丑数
刷题专栏(十六):丑数
59 0
|
6月前
|
算法
刷题专栏(二十):单词规律
刷题专栏(二十):单词规律
58 0
|
6月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
119 0
|
6月前
|
算法
刷题专栏(二十四):两个数组的交集
刷题专栏(二十四):两个数组的交集
105 0