题目:
给定一个未排序的整数数组,找到第一个丢失的正整数。
例如,
给定 [1,2,0] 返回3,
给定 [3,4,-1,1] 返回2。
解题思路:
要求O(n)的复杂度,可以用哈希表来存储1到n的内容。先遍历一遍原数组,将原数组中的1-n的整数存入哈希表对应0到n-1的位置。再对哈希表进行遍历,遍历到存储内容为空的,则返回遍历到整数的索引值,即为第一个丢失的正整数。
注意考虑边界条件的情况。
代码(Python):
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if nums==[]:
return 1
n = len(nums)
hashed = [0]*n
for i in range(n):
if nums[i]>0 and nums[i]<=n:
hashed[nums[i]-1]+=1
for i in range(n):
if hashed[i]==0:
return i+1
return n+1