问一下这个该怎么写?

img

逻辑:
1.创建一个和数组等长的数字且全部初始化成0,用于存储对应的位是否出现
2.遍历数组,将符合条件的数写入数组对应的位
3.查找第一个0的位置即最小的没出现的正整数
参考代码:

def TEST_DO_NOT_CHANGE(nums):
    print(nums)
    result = None
    ##########开作答
    length = len(nums)
    temp = [0] * length
    for x in nums:
        if x > 0 and x <= length:
            temp[x - 1] = x
    result = temp.index(0) + 1
    #########结束作答
    return result

i = 0
while i < len(nums):
    if nums[i]>=1 and nums[i]<=len(nums):
        if nums[i] == i + 1:
            i += 1
        else:
            if nums[i] != nums[nums[i]-1]:
                tmp = nums[nums[i]-1]
                nums[nums[i]-1] = nums[i]
                nums[i] = tmp
            else:
                nums[i]=-1
                i += 1
    else:
        nums[i]=-1
        i+=1
for i in range(len(nums)):
    if nums[i] < 1:
        result = i + 1
        break
if result is None:
    result = len(nums) + 1