一个全是32位整数的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字?

asddsaasd111 2014-09-30 01:32:15
用hash怎么解决?求c++/Java代码
...全文
393 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vegertar 2014-10-03
  • 打赏
  • 举报
回复
一次遍历。 求所有异或v1,同时求不同值异或v2,然后再异或v1^v2。 遍历时需要做一个bitmap方便求不同值异或,否则内存占太大。
warning_0 2014-10-03
  • 打赏
  • 举报
回复
上个月应付笔试面试的时候看到过一种思路,我说说,你看是不是你想要的。有一种bitmap的东东,以1bit表示一个整数(出现或没出现),我们可以用2bit表示四种状态:没出现、出现一次、出现两次和出现三次及以上,你建立一个整数(uint32_t)数组A(bit序列),每个整数可以表示16个整数,遍历你原来的那个整数数组B,每遍历一个整数,在A中对应位加1(加到3就不变了)。比如说你遍历到B中的一个整数是18,你就把A[1]的bit5bit4加1(原来00,现在就是01,以此类推)。具体实现的话,要用到位运算,不复杂,在《编程珠玑》上有相关讨论。楼主看是不是,是的话,求给分,我好去提问题~~~
会飞的Pikachu 2014-10-01
  • 打赏
  • 举报
回复
帮顶贴 LZ加油

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧