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

缺失的第一个正整数

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
};
全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务