在原数组中修改
因为我们是通过增加n来修改数据,所以被修改位置的数据依然可以通过取模还原出来,不会丢失数据,
所以在遍历一遍后,没有被增加的位置(值小于n的位置)的下标加1就是未包含的数据
至于为什么要加一,减一操作,因为数组下标是从0开始的。
func findDisappearedNumbers(nums []int) []int {
n := len(nums)
ans := []int{}
for _,v := range nums {
v = (v-1) % n
nums[v] += n
}
for i,j := range nums {
if j <= n {
ans = append(ans,i+1)
}
}
return ans
}