为了账号安全,请及时绑定邮箱和手机立即绑定

面试中遇到的一道算法题

面试中遇到的一道算法题

繁华开满天机 2018-08-01 17:22:41
有一堆数,其中有两个数出现了一次,其他的数都出现了两次。怎样将这两个只出现一次的数找出来?排除打表,统计外有什么更为高效的方法。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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

时间复杂度 O(n)
空间复杂度 O(1)


查看完整回答
反对 回复 2018-08-04
?
冉冉说

TA贡献1877条经验 获得超1个赞

应该可以用桶排序

查看完整回答
反对 回复 2018-08-04
  • 3 回答
  • 0 关注
  • 780 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信