第九周第一次作业

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



结果展示:


猜你喜欢

转载自blog.csdn.net/shi_gu_re/article/details/80170931