题目:
给定一个长度为n的数组,包含从0-n的整数,找到其中丢失的整数。如给定[0,1,3]返回2。要求O(n)复杂度,且只能使用常量个额外空间。
解题思路:
用负数来表示该数对用位置已被检索。即对数组进行遍历,将下标为当前整数的数字取负。这样既能保存原数组的值,也可以保存该数是否被包含的信息。
代码(Python):
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
flag = 0
for i in range(len(nums)):
if abs(nums[i])>=len(nums):
flag = 1
continue
nums[abs(nums[i])] = -nums[abs(nums[i])]
if flag!=1:
return len(nums)
flag = 0
for i in range(len(nums)):
if nums[i]>0:
return i
if nums[i]==0:
flag = 1
index = i
if flag==1:
return index
else:
return 0