题解 | #缺失的第一个正整数#经典哈希

缺失的第一个正整数

https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @return int整型
 */
 //经典题目,解法为建立哈希,全赋0,对命中标记为1,寻找第一个0值即可
int minNumberDisappeared(int* nums, int numsLen ) {
    // write code here
    int hash[10000000]={0};
    int i=0;
    memset(hash, 0, 10000000);//全赋0
  //将出现过的正整数进行标记
    for(i=0;i<numsLen;i++)
    {
        if(nums[i]>0&&nums[i]<=numsLen) hash[nums[i]-1]=1;//标记
    }
  //开始寻找第一个正整数
    for(i=0;i<numsLen;i++)
    {
        if(hash[i]==0) break;//找哈希中第一个0值,输出其位置+1
    }
    return i+1;
}

全部评论

相关推荐

12-17 16:18
牛客_运营
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Lambdayo:算法岗是这样的,后端开发的牛马可就没那么幸运啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务