题解 | #缺失的第一个正整数#

缺失的第一个正整数

https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
 */
function minNumberDisappeared( nums ) {
    // 解题思路:结果必然是在[1,n+1]之间,如果nums为1,2,3这种,结果就是4. 否则就在[1,n]
    // 所以,我们可以把数组设计成一个类似Map的, 步骤如下
    // 1. 将所有负数变成 n + 1
    // 2. 遍历,更改标记即可
   // 3. 返回第一个未被标记的下标即可.
    let n = nums.length;

    for (let i = 0; i < n; i++) {
        if (nums[i] <= 0) {
            nums[i] = n + 1;
        }
    }

    for (let i = 0; i < n; i++) {
        let num = Math.abs(nums[i]);
        if (num <= n) {
            nums[num - 1] = -Math.abs(nums[num - 1]);
        }
    }

    for (let k = 0; k < n; k++) {
        if (nums[k] > 0) {
            return k + 1;
        }
    }
    return n + 1;
} 
module.exports = {
    minNumberDisappeared : minNumberDisappeared
};

看代码介绍.

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务