只出现一次的数字 II
题目链接: https://leetcode.cn/problems/single-number-ii
解题思路:
对于每个数字
num,分别更新变量a和b的值,具体来说,更新a的值为(a ^ num) & ^b,更新b的值为(b ^ num) & ^a这两个式子的含义是将
num与a进行异或运算,然后将结果与b取反的结果进行按位与运算,得到新的a的值将
num与b进行异或运算,然后将结果与a取反的结果进行按位与运算,得到新的b的值这样可以保证
a和b中只存储出现一次的数字,而不存储出现多次的数字
func singleNumber(nums []int) int {
a, b := 0, 0
for _, num := range nums {
a = (a ^ num) & ^b
b = (b ^ num) & ^a
}
return a
}复杂度分析
时间复杂度: 时间复杂度:,其中 是数组长度
空间复杂度: 空间复杂度是
最后更新于
这有帮助吗?