刷题专栏(二十八):找到所有数组中消失的数字

简介: 刷题专栏(二十八):找到所有数组中消失的数字

前言

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

今天的这道题《找到所有数组中消失的数字》,是针对数组数据结构的一道题。

已经做了好几道关于数组数据结构的题目了,大家有兴趣可以去专栏中找一下相关题目。

那么下面就一起来看一下吧。

image.png

算法题:找到所有数组中消失的数字

根据题目的描述来看,其主要目的是针对一个整数数组的元素,从其中找出一个区间内缺少的数字元素。

这个区间就是1到数组长度的闭区间。

大概的解题思路,可以通过循环数组来保存到所有的数字保存在Set集合中,然后判断出哪个数字不存在。

也可以通过排序来预处理整数数组,随后再次循环判断哪些数字是缺失的,如此也可以获得预期结果。

下面我们就来看一下代码的编写吧。

代码展示

本次代码执行结果如下:

是通过固定的对区间最大值进行取余,以此来判断出缺少哪些具体的整数数值。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.findDisappearedNumbers(new int[]{4,3,2,7,8,2,3,1}));
    }
    public List<Integer> findDisappearedNumbers(int[] nums) {
        int n = nums.length;
        for (int num : nums) {
            int x = (num - 1) % n;
            nums[x] += n;
        }
        List<Integer> resultList = new ArrayList<Integer>();
        for (int i = 0; i < n; i++) {
            if (nums[i] <= n) {
                resultList.add(i + 1);
            }
        }
        return resultList;
    }
}

代码执行结果

今天的这个执行结果还不错。

image.png

总结

今天主要就是考察对数组的理解,只要可以熟练的处理数组,这道题也就没什么太大难度了。

标签:

Java

目录
相关文章
学C的第八天(完成猜字谜游戏复习之前的内容;了解goto转向语句;补充知识点;练习,学习试除法和辗转相除法)-2
3.写一个代码,打印100-200之间的素数:(新思路:试除法) (判断i是否为素数:用 2到i-1 之间的数字去试除 i,如果能整除则i不是素数)
104 0
|
8月前
|
存储 算法 索引
刷题专栏(二十六):字符串中的第一个唯一字符
刷题专栏(二十六):字符串中的第一个唯一字符
106 1
刷题专栏(二十六):字符串中的第一个唯一字符
|
8月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
139 2
|
8月前
|
算法
刷题专栏(二十一):区域和检索 - 数组不可变
刷题专栏(二十一):区域和检索 - 数组不可变
120 1
|
8月前
leetcode-面试题 17.19:消失的两个数字
leetcode-面试题 17.19:消失的两个数字
86 0
|
8月前
|
算法
刷题专栏(十八):第一个错误的版本
刷题专栏(十八):第一个错误的版本
56 0
|
8月前
|
算法
刷题专栏(十七):丢失的数字
刷题专栏(十七):丢失的数字
67 0
|
8月前
|
算法 Java
算法编程(十二):多数元素
算法编程(十二):多数元素
38 0
|
Java
《LeetCode刷题》—448. 找到所有数组中消失的数字
《LeetCode刷题》—448. 找到所有数组中消失的数字
119 0
《LeetCode刷题》—448. 找到所有数组中消失的数字
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第六十四题-查找元素位置前端歌谣的刷题之路-第六十四题-查找元素位置
#yyds干货盘点# 前端歌谣的刷题之路-第六十四题-查找元素位置前端歌谣的刷题之路-第六十四题-查找元素位置
78 0
#yyds干货盘点# 前端歌谣的刷题之路-第六十四题-查找元素位置前端歌谣的刷题之路-第六十四题-查找元素位置