【力扣】41. 缺失的第一个正数

41. 缺失的第一个正数

题目描述

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:

  • 输入:nums = [1,2,0]
  • 输出:3
  • 解释:范围 [1,2] 中的数字都在数组中。

示例 2:

  • 输入:nums = [3,4,-1,1]
  • 输出:2
  • 解释:1 在数组中,但 2 没有。

示例 3:

  • 输入:nums = [7,8,9,11,12]
  • 输出:1
  • 解释:最小的正数 1 没有出现。

提示:

  • 1 <= nums.length <= 10^5^
  • -2^31^ <= nums[i] <= 2^31^ - 1

解题方法

哈希数组

  • C 语言
c 复制代码
int firstMissingPositive(int* nums, int numsSize) {
    int tab[numsSize + 1];
    memset(tab, 0, sizeof(tab));

    for (int i = 0; i < numsSize; i++) {
        if (nums[i] > 0 && nums[i] <= numsSize) {
            tab[nums[i]] += 1;
        }
    }

    for (int i = 1; i < numsSize + 1; i++) {
        if (tab[i] == 0) {
            return i;
        }
    }

    return numsSize + 1;
}
相关推荐
GoGolang8 分钟前
golang出现panic: runtime error: index out of range [0] with length 0(创建n阶矩阵时)
leetcode
半截詩39 分钟前
力扣Hot100-24两两交换链表中的节点(三指针)
算法
测试萧十一郎43 分钟前
推荐三款常用接口测试工具!
自动化测试·软件测试·功能测试·测试工具·程序人生·职场和发展
2401_857636391 小时前
Scala中的尾递归优化:深入探索与实践
大数据·算法·scala
点云侠1 小时前
matlab 干涉图仿真
开发语言·人工智能·算法·计算机视觉·matlab
2401_857638031 小时前
【深度解析】滑动窗口:目标检测算法的基石
人工智能·算法·目标检测
Czi橙1 小时前
玩玩快速冥(LeetCode50题与70题以及联系斐波那契)
java·算法·快速幂·斐波那契
Python大数据分析@2 小时前
用Python实现的10种聚类算法汇总
python·算法·聚类
橘子味的小橙2 小时前
leetCode-hot100-动态规划专题
java·算法·leetcode·动态规划
__AtYou__2 小时前
Golang | Leetcode Golang题解之第206题反转链表
leetcode·golang·题解