题目: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
结果展示: