Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements of [1, n] inclusive that do not appear in this array.
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
Example:
Input: [4,3,2,7,8,2,3,1] Output: [5,6]
解题思路:
遍历一遍数组的所有数,将每个数字所引的那个位置的数字置为相反数,然后再遍历一遍这个数组,将为正数的位置上的标号输出
解题代码:
ans=[]
for i in range(0,len(nums)):
idx=abs(nums[i])-1
nums[idx]=-nums[idx] if nums[idx]>0 else nums[idx]
for i in range(0,len(nums)):
if nums[i]>0:
ans.append(i+1)
return ans

本文介绍了一种在不使用额外空间且时间复杂度为O(n)的情况下找出数组中缺失元素的方法。通过遍历数组,利用数组元素作为索引将对应位置的数值变为负数,再遍历一次找到仍为正数的索引即为缺失的元素。
445

被折叠的 条评论
为什么被折叠?



