题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
http://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
public static int[] singleNumber(int[] array) { int ret = 0; for (int n : array) { ret ^= n; } int div = 1; while ((div & ret) == 0) { div <<= 1; } int a = 0, b = 0; for (int n : array) { if ((div & n) != 0) { a ^= n; } else { b ^= n; } } if (a>b) { return new int[]{b, a}; }else { return new int[]{a, b}; } }
算法 文章被收录于专栏
数据结构和算法