题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
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} }