找到数组中消失的数字——数组

98 阅读1分钟

image.png

在原数组中修改

因为我们是通过增加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
}