题解 | #缺失的第一个正整数#经典哈希
缺失的第一个正整数
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; }