📌  相关文章
📜  教资会网络 | UGC NET CS 2016 年 7 月 – III |问题 63(1)

📅  最后修改于: 2023-12-03 14:54:49.980000             🧑  作者: Mango

教资会网络 | UGC NET CS 2016 年 7 月 – III |问题 63
问题描述

教资会网络(UGC NET)计算机科学试题中的第63题。

问题详情

给定一个包含n个整数的数组arr[],找到数组中缺失的最小正整数。

输入

数组大小 n 和数组元素 arr[]。

输出

返回缺失的最小正整数。

示例

输入:

n = 5
arr[] = [3, 4, -1, 1, -2]

输出:

2
解释

在给定的数组中,最小的正整数是2,因此缺失的最小正整数为2。

解决方案

我们可以使用哈希集合来解决这个问题。首先,我们将所有正整数添加到一个哈希集合中。然后遍历数组中的每个元素,如果它是正整数且存在于哈希集合中,我们就将其从集合中删除。最后,哈希集合中剩余的最小的正整数就是我们要找的结果。

以下是相应的代码段:

def findMissingPositive(nums):
    n = len(nums)
    numSet = set(nums)
    
    # 遍历所有正数,找到缺失的最小正整数
    for i in range(1, n+1):
        if i not in numSet:
            return i
    
    # 如果数组中所有正整数都存在,返回n+1
    return n+1

使用该函数解决上述示例问题:

n = 5
arr = [3, 4, -1, 1, -2]

result = findMissingPositive(arr)
print(result)

以上代码将输出:

2

这就是如何使用哈希集合在给定数组中找到缺失的最小正整数的解决方案。这种方法的时间复杂度为O(n),其中n是数组的大小。