LeetCode #448. Find All Numbers Disappeared in an Array

题目

448. Find All Numbers Disappeared in an Array


解题方法

首先遍历数组,将其中所有位置上的数作为index,然后把nums[index]位置的数设置为负数(如果已经是负数则不变),遍历结束后,数组中所有正数的下标值+1就是缺失的数。
时间复杂度:O(n)
空间复杂度:O(1)


代码

class Solution:
    def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
        ret = []
        for i in range(len(nums)):
            nums[abs(nums[i])-1] = -abs(nums[abs(nums[i])-1])
        for i in range(len(nums)):
            if nums[i] > 0:
                ret.append(i+1)
        return ret
posted @ 2020-11-03 08:48  老鼠司令  阅读(63)  评论(0)    收藏  举报