Java教程

力扣448(java)-找到数组中所有消失的数(简单)

本文主要是介绍力扣448(java)-找到数组中所有消失的数(简单),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目:

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

 示例 1:

输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]
示例 2:

输入:nums = [1,1]
输出:[2]

提示:

n == nums.length
1 <= n <= 105
1 <= nums[i] <= n
进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、

1.创建一个ArrayList数组和一个布尔型数组

2.先遍历一遍nums数组,把出现过的数字的b[i]设置为true

3.然后遍历循环1-n,如果b[i]=false,则表示nums数组中没出现过,则添加到结果数组中

代码:

 

二、

1.创建一个ArrayList数组和一个HashSet集合(不允许有重复元素)

2.循环遍历,去掉重复元素,添加到新的集合中

3.循环遍历1-n,如果集合中不包含某个元素,就添加到数组中,最终输出数组

 

 小知识:

1.ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制

创建ArrayList:

ArrayList<E> objectName =new ArrayList<>(); 

2.添加元素到 ArrayList 可以使用 add() 方法

a.add(i);

3. ArrayList可以使用 for-each 来迭代元素

4.HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合
  创建一个 HashSet 对象 b,用于保存元素

HashSet b = new HashSet()

5.HashSet 类添加元素可以使用 add() 方法

 for(int i = 0; i < n;i++){
            b.add(nums[i]);
        }

6.HashSet 类使用 contains() 方法来判断元素是否存在于集合当中

 for(int i = 1;i < n + 1; i++){
            if(!b.contains(i)){
                a.add(i);
            }

7.布尔数组,默认值是false,  并且只会打印false或者是true

   根据根据字符数组的长度创建布尔数组的个数

boolean[] b = new boolean[c.length]; 

 

这篇关于力扣448(java)-找到数组中所有消失的数(简单)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!