NOTE
只出现一次的数字
使用计数或异或寻找数组中只出现一次的元素。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
2. 思路
- 思路一
- 使用map统计每个元素的个数
- 思路二
- 对数组中的每个元素相互异或,由于相同的元素异或结果为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
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看