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

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

前言

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

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

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

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

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月前
|
人工智能 算法 编译器
刷题日记①
刷题日记①
57 2
|
6月前
|
算法 Java
刷题专栏(二十八):找到所有数组中消失的数字
刷题专栏(二十八):找到所有数组中消失的数字
120 4
|
6月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
133 2
|
6月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
54 0
|
6月前
|
算法
刷题专栏(十八):第一个错误的版本
刷题专栏(十八):第一个错误的版本
50 0
|
6月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
121 0
|
6月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
98 0
刷爆LeetCode!字节技术官亲码算法面试进阶神技太香了
正赶上金三银四,说到数据结构与算法这个词,肯定有不少人会眉头一皱。也不知从什么时候开始,以字节为主的一大波公司面试开始了对算法的连环拷问。如果事前没有系统地刷一波题的话,算法这一关还是比较难过
|
存储 缓存 移动开发
#yyds干货盘点 前端小知识点扫盲笔记记录2
#yyds干货盘点 前端小知识点扫盲笔记记录
102 0
|
存储 缓存 移动开发
#yyds干货盘点 前端小知识点扫盲笔记记录(2)
#yyds干货盘点 前端小知识点扫盲笔记记录
78 0