猿问

面试中遇到的一道算法题

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

繁华开满天机
浏览 810回答 3
3回答

慕姐4208626

1先把所有数字 做 异或操作 得到数字 S2 从高到低位检查 S 的 bit 找到第一个 1 3 检查所有数字 根据 这个bit位是1 还是 0 把 原来的数组划分为 两个4 对每个数组 ,把数组内的数字做 异或操作。分别得到数字 A ,B5 数字 A ,B 即为所求时间复杂度 O(n)空间复杂度 O(1)

冉冉说

应该可以用桶排序
随时随地看视频慕课网APP
我要回答