大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题这个月进度是数据结构,让大家练到各种各样的数据结构题目,熟悉数据结构的增删改查,一年以后,蜕变成为一个不一样的自己!

📒博客首页:泡泡的首页

🎉欢迎关注🔎点赞👍收藏⭐️留言📝

❤️ :热爱C/C++与算法学习,云计算等,期待一起交流!

🙏作者水平有限,如果发现错误,求告知,多谢!

👻高校算法学习社区:https://bbs.csdn.net/forums/Suanfa        

一起加入刷题内卷大军,还可以加入专属内卷群,里面福利多多大佬多多!

今日题目:缺失的第一个正数

题目难度:⭐️

题目涉及算法:排序,暴力枚举,二分,记忆化搜索,双指针,位运算,哈希表等

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;
}

每日一题,有效内卷!

如果有用的话,还请给个点赞三连感谢!!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐