LeetCode------找到所有数组中消失的数字(6)【数组】

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array

1、题目

找到所有数组中消失的数字

给你一个含 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,这样不在范围内的数据则小于等于N。未出现的数字没有进行加N操作,肯定小于N。(num-1)%n
这个方式可以将数据还原,就算是重复的数据也可以解决。

第二次遍历:将小于N的数据取出来。
在这里插入图片描述

class Solution {

    public List<Integer> findDisappearedNumbers(int[] nums) {
        int n = nums.length;
        for( int num : nums){
            int x = (num-1)%n;//将范围内的数据都相加N,存在的数据都大于n
            nums[x]+=n;
        }

        List<Integer> result = new ArrayList<Integer>();

        for(int i=0;i<nums.length;i++){
            if(nums[i]<=n){
                result.add(i+1);
            }
        }

        return result;


    }
}

在这里插入图片描述

posted on   热爱技术的小郑  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示