第九周第一次作业

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



结果展示:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值