Skip to content

Latest commit

 

History

History
47 lines (46 loc) · 1.15 KB

448-find-all-numbers-disappeared-in-an-array.md

File metadata and controls

47 lines (46 loc) · 1.15 KB
// 智障版
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findDisappearedNumbers = function(nums) {
    const map = [];
    let res = [];
    // 循环标记
    for (let i = 0; i < nums.length; i++) {
        if (!map[nums[i] - 1]) {
            map[nums[i] - 1] = nums[i];
        }
    }
    // 空的即为没有出现的数字
    for (let i = 0; i < nums.length; i++) {
        if (!map[i]) {
            res.push(i+1)
        }
    }
    return res;
};

// 不使用额外空间版
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findDisappearedNumbers = function(nums) {
    let res = [];
    // 以下标来区分,将数组中mums[i]置为负数,找出最后数组中为整数的位置i,未出现的数字为i+1
    // 转换前[ 2, 1,1, 4, 5]
    // 转换后[-2,-1,1,-4,-5]
    // 位置2的值依然为正数,表示2+1,即3没有出现过
    for (let i = 0; i < nums.length; i++) {
        let index = Math.abs(nums[i]) - 1;
        nums[index] = -Math.abs(nums[index])
    }
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] > 0) {
            res.push(i+1);
        }
    }
    return res;
};