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

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

前言

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

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

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

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

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

总结

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

目录
相关文章
|
8月前
|
算法 搜索推荐 Shell
python技术面试题(十五)--算法
python技术面试题(十五)--算法
|
1月前
|
人工智能 算法 编译器
刷题日记①
刷题日记①
37 2
|
5月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
33 0
|
5月前
|
算法 Java
刷题专栏(二十八):找到所有数组中消失的数字
刷题专栏(二十八):找到所有数组中消失的数字
102 4
|
5月前
|
算法
刷题专栏(二十):单词规律
刷题专栏(二十):单词规律
37 0
|
5月前
|
算法
刷题专栏(十八):第一个错误的版本
刷题专栏(十八):第一个错误的版本
27 0
|
5月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
98 0
|
12月前
|
前端开发
#yyds干货盘点 前端小知识点扫盲笔记记录4
#yyds干货盘点 前端小知识点扫盲笔记记录4
53 0
|
12月前
|
前端开发
#yyds干货盘点 前端小知识点扫盲笔记记录5-1
#yyds干货盘点 前端小知识点扫盲笔记记录5
60 0
|
12月前
|
设计模式 前端开发
#yyds干货盘点 前端小知识点扫盲笔记记录6-2
#yyds干货盘点 前端小知识点扫盲笔记记录6
55 0