前言
刷题专栏到目前已经是第二十八篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天的这道题《找到所有数组中消失的数字》,是针对数组数据结构的一道题。
已经做了好几道关于数组数据结构的题目了,大家有兴趣可以去专栏中找一下相关题目。
那么下面就一起来看一下吧。
算法题:找到所有数组中消失的数字
根据题目的描述来看,其主要目的是针对一个整数数组的元素,从其中找出一个区间内缺少的数字元素。
这个区间就是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; } }
代码执行结果
今天的这个执行结果还不错。
总结
今天主要就是考察对数组的理解,只要可以熟练的处理数组,这道题也就没什么太大难度了。
标签: