今日题目:缺失的第一个正数
题目难度:⭐️
题目涉及算法:排序,暴力枚举,二分,记忆化搜索,双指针,位运算,哈希表等
ps:有能力的小伙伴可以尝试优化自己的代码双百或者一题多解,这样能综合提升自己的算法能力
我选用的哈希表解题
执行用时: 132 ms
内存消耗: 31.1 MB
解题思路:
利用哈希表保存数组的全部值,如果是负数或者超值就不保存了,然后遍历判断!
#define MAX 500001 int hash[500001]; int firstMissingPositive(int* nums, int numsSize){ memset(hash,0,sizeof(hash)); for(int i=0;i<numsSize;i++) { if(nums[i]>0&&nums[i]<MAX) { hash[nums[i]]++; } } for(int i=1;i<=numsSize;i++) { if(hash[i]==0) { return i; } } return numsSize+1; }
每日一题,有效内卷!