我的答案:
class Solution:
def firstMissingPositive(self, nums):
if len(nums) == 0:
return 1
temp = max(nums)
if temp<1:
return 1
for i in range(1,temp+1):
if i not in nums:
return i
return temp+1
官方答案剑走偏锋(强行哈希)
def firstMissingPositive1(self, nums):
temp = len(nums)
if 1 not in nums:
return 1
if temp == 1:
return 2
for i in range(temp):
if nums[i] <=0 or nums[i]>=temp+1:
nums[i] = 1
for i in range(temp):
a = abs(nums[i])
if a == temp: //如果值等于数组的长度,就将数组[0]设置为负数
nums[0] = - abs(nums[0])
else:
nums[a] = - abs(nums[a]) //否则有这个数为索引,将对应的值设置为负数
for i in range(1, temp)://先判断1到len(nums)-1有没有
if nums[i] > 0:
return i
if nums[0] > 0://再判断len(nums)存在吗
return temp
return temp + 1