面试中遇到的一道算法题 财富值69

2016-10-13 08:01发布

有一堆数,其中有两个数出现了一次,其他的数都出现了两次。怎样将这两个只出现一次的数找出来?
排除打表,统计外有什么更为高效的方法。

8条回答

1先把所有数字 做 异或操作 得到数字 S
2 从高到低位检查 S 的 bit 找到第一个 1
3 检查所有数字 根据 这个bit位是1 还是 0 把 原来的数组划分为 两个
4 对每个数组 ,把数组内的数字做 异或操作。分别得到数字 A ,B
5 数字 A ,B 即为所求

一周热门 更多>