Google面试题中的两道趣题
来源:互联网 发布:数据库认证有哪些 编辑:程序博客网 时间:2024/05/14 13:00
看看下面两道题,它的解答非常简单,即使没学过信息学的人也可以想到答案。你能在多短的时间内想出问题的算法来?一小时?一分钟?一秒钟?
1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。
2. 给你一个数组A[1..n],请你在O(n)的时间里构造一个新的数组B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法运算。
Solution:
1. 遍历链表,给每个元素赋一个0到1之间的随机数作为权重(像Treap一样),最后取出权重最大的k个元素。你可以用一个堆来维护当前最大的k个数。
2. 从前往后扫一遍,然后从后往前再扫一遍。也就是说,线性时间构造两个新数组,P[i]=A[1]*A[2]*...*A[i],Q[i]=A[n]*A[n-1]*...*A[i]。于是,B[i]=P[i-1]*Q[i+1]。
突然想到,给别人(MM?)介绍信息学时,用这两道题当例子挺合适的。
- Google面试题中的两道趣题
- Google 面试题讨论
- 小小Google面试题
- google面试题
- 面试题2-- Google
- google面试题
- google面试题
- Google 的面试题
- Google面试题
- 一道Google面试题
- google 面试题 分享
- google面试题
- GOOGLE面试题
- Google面试题
- Google面试题
- google面试题
- google一些面试题
- google面试题搜集
- Poincaré圆盘模型:一个神奇的双曲世界
- 可爱的皮卡丘~~~
- 号外:2,3图灵机通用性得证 英国大学生获得2.5万美元奖金
- 编辑距离、拼写检查与度量空间:一个有趣的数据结构
- 趣图:分形图形之海岸线 无限放大的图片
- Google面试题中的两道趣题
- 函数上某一点导数为正,该点邻域不一定形成单增区间
- 推荐网页:一大堆的Computer Science Puzzle
- 一句话影评:2007.08.13 - 2007.10.18
- Retargeting:经典动态规划问题的一个出人意料的应用
- 创意游戏推荐:FPS+解谜 VALVE新游戏发行
- 数学与色情? “以下图片完全由数学算法生成”
- 07年NOIp模拟赛by Matrix67 TRIVIA20
- 07年NOIp模拟赛by Matrix67 解题报告