题目:41. First Missing Positive
Given an unsorted integer array, find the smallest missing positive integer.
算法思路:
新建另一个列表(设为mynums),将列表长度设置为给定列表(设为nums)长度加一,并且设置列表中的元素值与该元素值索引号相同,然后遍历nums, 如果 nums[index] > 0 且 nums[index] <= len(nums),则将mynums[nums[index]]设为0,遍历完成之后,遍历mynums,寻找第一个元素值非零的索引,返回索引,若遍历完成都没有找到,则返回len(nums) + 1。
算法时间复杂度为O(n)。
代码展示:
def firstMissingPositive(nums):
"""
:type nums: List[int]
:rtype: int
"""
mynums = [] #创建新列表
for i in range(len(nums) + 1): #初始化新列表
mynums.append(i)
#将同时存在于mynums和nums,并且大于0小于len(nums)的元素值标记为0
for i in range(len(nums)):
if nums[i] > 0 and nums[i] <= len(nums):
mynums[nums[i]] = 0
#寻找第一个丢失的第一个正整数
current = 0
for current in range(1, len(mynums)):
print(current)
if mynums[current] != 0:
return current
return current + 1
结果展示: