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

Day09

算法每日一题

原题链接:https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/description
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

/**
 * @param {number[]} nums - 输入的数组,其中包含从 1 到 n 的整数
 * @return {number[]} - 返回数组中缺失的数字
 */
var findDisappearedNumbers = function(nums) {
    const n = nums.length; // 获取数组的长度,即 n

    // 第一步:遍历数组,将出现的数字对应的索引位置的值增加 n
    for (const num of nums) {
        nums[(num - 1) % n] += n; // 在对应索引位置增加 n
    }

    const res = []; // 用于存储缺失的数字

    // 第二步:遍历数组,找出值小于等于 n 的索引位置
    for (const [i, num] of nums.entries()) {
        if (num <= n) {
            res.push(i + 1); // 将缺失的数字(索引 + 1)加入结果数组
        }
    }

    return res; // 返回结果数组
};
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注