腾讯2011面试题
2011-10-16 21:16
218 查看
今天去腾讯面试, 面试官出了一道题:
有10亿个整数, 不重复, 不连续. (整数的范围按32位平台计算. 范围为0~2^32).
求: 这10亿个整数中, 值在中间的那个数 (即第5亿个大的那个数).
面试官给我的答题时间是他抽完一根烟的时间. 结果悲剧了. 他只用了一分钟左右就抽完了.而我却没做出来.
回来细想, 根据面试官的提示. 想到用位来做最好.
将一个整数对应一个bit. 所以 0~2^32之间所有整数, 可以用2^32 * 1bit / 8 = 2^29 B = 512MB. 这样可以在内存里申请512M内存来保存.
----->假设整数与位组之间的映射关系为1对应第1位, 2,对应第2位, ..., 2^32对应最后一位.
对10亿个数做一次遍历. 如果某个数存在, 就在相应的位组位置标记为1. 最后位组有10亿个1.
还记得整数与位组对应的关系吗?
位组从头开始查找第5亿个1所在的位置就是中间值的那个数.
有10亿个整数, 不重复, 不连续. (整数的范围按32位平台计算. 范围为0~2^32).
求: 这10亿个整数中, 值在中间的那个数 (即第5亿个大的那个数).
面试官给我的答题时间是他抽完一根烟的时间. 结果悲剧了. 他只用了一分钟左右就抽完了.而我却没做出来.
回来细想, 根据面试官的提示. 想到用位来做最好.
将一个整数对应一个bit. 所以 0~2^32之间所有整数, 可以用2^32 * 1bit / 8 = 2^29 B = 512MB. 这样可以在内存里申请512M内存来保存.
----->假设整数与位组之间的映射关系为1对应第1位, 2,对应第2位, ..., 2^32对应最后一位.
对10亿个数做一次遍历. 如果某个数存在, 就在相应的位组位置标记为1. 最后位组有10亿个1.
还记得整数与位组对应的关系吗?
位组从头开始查找第5亿个1所在的位置就是中间值的那个数.
相关文章推荐
- 腾讯2011安全工程师面试题
- 2011腾讯实习招聘面试题软件开发
- 腾讯一道面试题
- 2017 年初、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集
- 【牛客访谈】对话何俊林:腾讯百度华为搜狗和滴滴面试题汇总
- 一个简单的计算器模拟程序-2011腾讯笔试填空题
- 腾讯笔试面试题
- 腾讯经典Android面试题
- 腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段?
- 一个腾讯的面试题
- 腾讯面试题:走台阶
- 腾讯WEB前端开发三轮面试经历及面试题
- 2011名企面试题(网上收集)
- 腾讯面试题—附答案
- 腾讯iphone面试题(转)
- 腾讯算法面试题
- 2011_New_Out Ref 面试题举例说明
- 【LeetCode】Longest Palindromic Substring && 【九度】题目1528:最长回文子串(腾讯2013年实习生招聘二面面试题)
- 腾讯面试题
- 腾讯面试题整理一