题目:41First 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



结果展示:

第九周第一次作业

相关文章: