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

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

const findDisappearedNumbers = (nums = [1,1]) => {
    let len = nums.length
    let res = []
    let map = {}
    for(let i = 0; i < len; i++){
        const v = nums[i]
        map[v] = true    
    }
    for(let i = 1; i < len + 1; i++){
        if(!map[i]){
            res.push(i)
        }
    }
    return res
};

const findDisappearedNumbers = (nums = [4,3,2,7,8,2,3,1]) => {
    const len = nums.length, ans = []
    for (let i = 0; i < len; i++) {
        let num = Math.abs(nums[i]);
        // 注意,如只有是正数的情况我们才转负数
        if (nums[num - 1] > 0) {
            nums[num - 1] *= -1;
            console.log(nums)
        }
    };
    for (let i = 0; i < len; i++) {
        // 正数的索引加1,就是我们缺失的数了
        if (nums[i] > 0) {
            ans.push(i + 1);
        };
    };
    return ans;
};

  

posted @ 2023-02-03 16:24  671_MrSix  阅读(9)  评论(0编辑  收藏  举报