NOTE

只出现一次的数字

使用计数或异或寻找数组中只出现一次的元素。

Data Structures & Algorithms创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 题目描述

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

2. 思路

  1. 思路一
    • 使用map统计每个元素的个数
  2. 思路二
    • 对数组中的每个元素相互异或,由于相同的元素异或结果为0,0与任何数异或的结果仍为那个数,因此最后的结果肯定时只出现过一次的那个数

3. 实现

3.1. 暴力

func singleNumber(nums []int) int {
    count := make(map[int]int, 0)
    for _, num := range nums {
        count[num]++
    }

    for _, num := range nums {
        if count[num] == 1 {
            return num
        }
    }
    return 0
}

3.2. 异或

func singleNumber(nums []int) int {
    res := 0

    for _, num := range nums {
        res ^= num
    }

    return res
    
}

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看