题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型一维数组 */ func FindNumsAppearOnce( nums []int ) []int { // write code here // a^a = 0 var res = make([]int, 2) tmp := 0 // 得到 a^b for _, num := range nums { tmp ^= num } // a^b 必有一位上是1, 找出最右边的1, 以此来将nums 分成两类 // 一类 &mask == 0 , 一类 &mask != 0 mask := 1 for tmp & mask == 0 { mask <<= 1 } a := 0 b := 0 // 分成两类 for _, num := range nums { if num&mask == 0 { a ^= num } else { b ^= num } } if a > b { res[0] = b res[1] = a } else { res[0] = a res[1] = b } return res }