问一个腾讯的算法题:有一个 vector 容器中,存有 1 亿个 qq 号(不重复),如何快速挑选出其中奇数号码?

2015-04-07 22:22:37 +08:00
 wind3110991

如题,今年春季的笔试题,不知道腾讯想表达什么意思,自己不是很精通STL。
感觉直接遍历一遍然后考察vector[i]>>1;
如果奇数就提出来,算法开销O(n),不知道是不是有什么更好的方法?
大神勿喷,这题有没有必要用hash?

5342 次点击
所在节点    C
48 条回复
also24
2015-04-08 17:35:06 +08:00
看到中间越看感觉越奇怪……
返回头又看一遍才反应过来是 奇数 不是 质数 的我面壁去了……

(:o 」∠)_
quericy
2015-04-08 17:41:27 +08:00
@lucifer9 然后有用户手滑的,有无聊随便选的,还有好奇心害死猫觉得有隐藏条件然后全点一遍的23333
blank4me
2015-04-09 09:45:50 +08:00
@quericy 一组数据不要发给一个人撒。多发几个人看看,再判断是否相信他们的结果。就和reCAPTCHA一样。
luoqeng
2015-04-18 00:09:55 +08:00
khan
2015-04-28 09:36:12 +08:00
判断低 bit位是否为1
khan
2015-04-28 11:00:02 +08:00
8byte int_64 * 100,000,000L 需内存约 100M

位运算 比 / %都要省 cpu, 剩下的内存问题可以多段分块加载
khan
2015-04-28 11:08:00 +08:00
体死早. 800M 内存 换成字符串大概不过2G, 加上指针 和 字符串本身内存, 分块处理 合并不可少
wind3110991
2015-04-30 23:03:05 +08:00
@khan 谢谢你的解答!我再想想,有点不理解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/182211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX