题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
func FindNumsAppearOnce( array []int ) []int {
// write code here
// 先将全部数进行异或运算,得出最终结果
num := array
tmp := 0
for _, val := range num {
tmp ^= val
}
// 找到那个可以充当分组去进行与运算的数
// 从最低位开始找起
mask := 1
for (tmp & mask) == 0 {
mask = mask << 1
}
// 进行分组,分成两组,转换为两组 求出现一次的数字 去求
a, b := 0, 0
for _, val := range num {
if val&mask == 0 {
a ^= val
} else {
b ^= val
}
}
if a > b {
return []int{b, a}
}
return []int{a, b}
}

美团成长空间 2663人发布