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

缺失的第一个正整数

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

  1. 方法一:哈希表
/**
 * @param nums int整型一维数组 
 * @return int整型
 */
function minNumberDisappeared( nums ) {
    let map = new Map() , max = -Infinity
    for(let i of nums){
        if( i > 0){
            map.set(i , 1)
        }
//         max的作用是记录接下来进行遍历寻找map中有无含有[1,max]的数值
        max = Math.max(max , i)
    }
//     当max小于0 ,返回 1
    if(max <= 0) return 1
//     此处的max+1是为了解决:当map中都含有1~max的数值时,返回max+1
    for(let j = 1 ; j <= max + 1 ; j++){
        if(!map.has(j)) return j
    }
    return 1
}
module.exports = {
    minNumberDisappeared : minNumberDisappeared
};

2.方法二:对方法一进行改良,排序后标记nums中大于0的位置即可 ,如此可替代哈希表

/**
 * @param nums int整型一维数组 
 * @return int整型
 */
function minNumberDisappeared( nums ) {
    let map = new Map() , max = -Infinity
    for(let i of nums){
        if( i > 0){
            map.set(i , 1)
        }
//         max的作用是记录接下来进行遍历寻找map中有无含有[1,max]的数值
        max = Math.max(max , i)
    }
//     当max小于0 ,返回 1
    if(max <= 0) return 1
//     此处的max+1是为了解决:当map中都含有1~max的数值时,返回max+1
    for(let j = 1 ; j <= max + 1 ; j++){
        if(!map.has(j)) return j
    }
    return 1
}
module.exports = {
    minNumberDisappeared : minNumberDisappeared
};
全部评论

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务