欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

448. 找到所有数组中消失的数字( 抽屉原理 )

程序员文章站 2022-03-04 23:51:10
...

LeetCode: 448. 找到所有数组中消失的数字

448. 找到所有数组中消失的数字( 抽屉原理 )


类似题:

博客指路: 442. 数组中重复的数据 ( 抽屉原理 )


抽屉原理

将数组中的 val 放入到 val - 1的下标中。

最后消失的数字就是 i n d e x ! = v a l − 1 index != val - 1 index!=val1


抽屉原理


func findDisappearedNumbers(nums []int) []int {
    var ans []int

    for i, _ := range nums {
        for nums[nums[i] - 1] != nums[i] {
            swap(nums, nums[i] - 1, i)
        }
    }

    for i, val := range nums {
        if val - 1 != i {
            ans = append(ans, i + 1)
        }
    }

    return ans
}

func swap(arr []int, a int, b int){
    if a == b{ return }
    arr[a] = arr[a] ^ arr[b]
    arr[b] = arr[a] ^ arr[b]
    arr[a] = arr[a] ^ arr[b]
}