Hulu 2013北京地区校招笔试题
2015-08-10 15:43
302 查看
填空题:
1、 中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,逆序遍历结果为?
题目应该改为 先序遍历吧! 先序遍历的结果是:FCBADEGH
2、 对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为?
使用哈弗曼编码,最短长度为25
3、 对长度12的有序数组进行二分查找,目标等概率出现在数组的每个位置上,则平均比较次数为?
如果被查找目标一定会出现的话,由于是等概率,所以出现在每个位置上的概率是1/12,计算式为1/12*(1+2*2+3*4+4*5)=37/12
4、 一副扑克(去王),每个人随机的摸两张,则至少需要多少人摸牌,才能保证有两个人抽到同样的花色。
令A、B、C、D依次代表扑克牌中的四种花色,随机抽取的两张牌的花色组合有10种,根据抽屉原理,则至少11个人抽时,才能保证有两个人抽到同样的花色。
5、 x个小球中有唯一一个球较轻,用天平秤最少称量y次能找出这个较轻的球,写出y和x的函数表达式y=f(x)
使用三分法效率最高,y=logx以3为底向上取整。
6、 3的方幂及不相等的3的方幂的和排列成递增序列1,3,4,9,10,12,13……,写出数列第300项
推出规律,令sn表示第n项的值,当n=2^k,sn=3^k,当2^k时,sn=3^k+s[n-2^k]。然后取n=300即可。
7、 无向图G有20条边,有4个度为4的顶点,6个度为3的顶点,其余顶点度小于3,则G有多少个顶点
题目有问题,应该问至少有多少个顶点。每条边可产生2个度,所以总共是40个度 4*4+6*3=34,40-34=6,则至少有4+6+3个点
8、 桶中有M个白球,小明每分钟从桶中随机取出一个球,涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是?
令f[i]表示桶中已经有i个球是红球后,还需要的期望时间,则f[i]=(i/M)*(f[i]+1)+(1-i/M)(f[i+1]+1),且f[M]=0, 递推后计算出f[0]=M(1+1/2+1/3+…+1/M)=M*(lnM+C),其中C为欧拉常数
9、 煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少
先装上1000吨,走250公里,放下500吨,回去装上1000吨,走到250公里,装上250吨,继续走250公里,放下250吨,往回走,装上1000吨,走到250公里,装上250吨,继续走250公里,又装上剩下的250吨。然后一直到目的地。
10、1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式(写出通项公式不得分)
从最简单开始递推,找出规律。令f
表示n个数进栈时,出栈顺序的个数。另外为1-n个数编号分别为a,b,c,d… 当n=1时,f[1]=1,当n=2时,f[2]=2,当n=3时,c出栈的位置可能在1、2或者3.当在1时,剩下的是n=2的子问题,也就是f[2];当在2时,剩下的是两个n=1的子问题,也就是f[1]*f[1];当n在3时,剩下的又是n=2的子问题,也就是f[2]。所以f[3]=f[2]+f[1]*f[1]+f[2]令f[0]=1,则f[3]=f[0]*[2]+f[1]*f[1]+f[2]*f[0],依次类推f
=f[0]*f[n-1]+f[1]*f[n-2]+…+f[n-1]*f[0]。 这是卡特兰数的递推公式。
11、宇宙飞船有100,000位的存储空间,其中有一位有故障,现有一种Agent可以用来检测故障,每个Agent可以同时测试任意个位数,若都没有故障,则返回OK,若有一位有故障,则失去响应。如果有无限多个Agent可供使用,每个Agent进行一次检测需要耗费1小时,现在有2个小时时间去找出故障位,问最少使用多少个Agent就能找出故障。
这个问题是小白鼠从药瓶中检测出毒药的扩展。基本问题是只能进行一轮实验,找出故障,采用的方法是对每个位置对应到从1-100000的二进制编码,则总共需要log2100000上取整个bit,然后第一个agent检测第一位bit为1的,第二个agent检测第二位bit为1的,依次类推其他bit,最后根据返回false的位置为1,返回OK的位置为0,就可以得出出故障的位置的2进制编码。
这里的问题扩展成可以进行两轮实验。那么采用的方法是对每个位置对应到从1-100000的三进制编码,则总共需要log3100000上取整个位,然后第一个agent检测第一位为2的,第二个agent检测第二位为2的,依次类推其他位,当第一轮检测结束时,我们只能知道出故障的位置对应的三进制编码哪些位是2,其他未知的位可能为1或者0,下面进行第二轮检测(就递归到上面的基本问题):把那些返回OK的agent再一起检测相应位上为1的,当第二轮检测结束,我们就可以知道哪些是1哪些是0.
总共12道填空题,还有一道太复杂,题目很长,还有示意图,看不懂更不会做,没有记录下来。
大题:
1、 n个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(n
logk)
借助一个大小为k的最大堆,建堆的复杂度为O(k),之后如果每个都和堆的根节点比较并且更新堆,则复杂度是O(nlgk)
2、 写程序输出8皇后问题的所有排列,要求使用非递归的深度优先遍历
3、 有n个作业,a1,a2…..an,作业aj的处理时间为tj,产生的效益为pj,最后完成期限为dj,作业一旦被调度则不能中断,如果作业aj在dj前完成,则获得效益pj,否则无效益。给出最大化效益的作业调度算法
应该用动态归纳。
1、 中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,逆序遍历结果为?
题目应该改为 先序遍历吧! 先序遍历的结果是:FCBADEGH
2、 对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为?
使用哈弗曼编码,最短长度为25
3、 对长度12的有序数组进行二分查找,目标等概率出现在数组的每个位置上,则平均比较次数为?
如果被查找目标一定会出现的话,由于是等概率,所以出现在每个位置上的概率是1/12,计算式为1/12*(1+2*2+3*4+4*5)=37/12
4、 一副扑克(去王),每个人随机的摸两张,则至少需要多少人摸牌,才能保证有两个人抽到同样的花色。
令A、B、C、D依次代表扑克牌中的四种花色,随机抽取的两张牌的花色组合有10种,根据抽屉原理,则至少11个人抽时,才能保证有两个人抽到同样的花色。
5、 x个小球中有唯一一个球较轻,用天平秤最少称量y次能找出这个较轻的球,写出y和x的函数表达式y=f(x)
使用三分法效率最高,y=logx以3为底向上取整。
6、 3的方幂及不相等的3的方幂的和排列成递增序列1,3,4,9,10,12,13……,写出数列第300项
推出规律,令sn表示第n项的值,当n=2^k,sn=3^k,当2^k时,sn=3^k+s[n-2^k]。然后取n=300即可。
7、 无向图G有20条边,有4个度为4的顶点,6个度为3的顶点,其余顶点度小于3,则G有多少个顶点
题目有问题,应该问至少有多少个顶点。每条边可产生2个度,所以总共是40个度 4*4+6*3=34,40-34=6,则至少有4+6+3个点
8、 桶中有M个白球,小明每分钟从桶中随机取出一个球,涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是?
令f[i]表示桶中已经有i个球是红球后,还需要的期望时间,则f[i]=(i/M)*(f[i]+1)+(1-i/M)(f[i+1]+1),且f[M]=0, 递推后计算出f[0]=M(1+1/2+1/3+…+1/M)=M*(lnM+C),其中C为欧拉常数
9、 煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少
先装上1000吨,走250公里,放下500吨,回去装上1000吨,走到250公里,装上250吨,继续走250公里,放下250吨,往回走,装上1000吨,走到250公里,装上250吨,继续走250公里,又装上剩下的250吨。然后一直到目的地。
10、1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式(写出通项公式不得分)
从最简单开始递推,找出规律。令f
表示n个数进栈时,出栈顺序的个数。另外为1-n个数编号分别为a,b,c,d… 当n=1时,f[1]=1,当n=2时,f[2]=2,当n=3时,c出栈的位置可能在1、2或者3.当在1时,剩下的是n=2的子问题,也就是f[2];当在2时,剩下的是两个n=1的子问题,也就是f[1]*f[1];当n在3时,剩下的又是n=2的子问题,也就是f[2]。所以f[3]=f[2]+f[1]*f[1]+f[2]令f[0]=1,则f[3]=f[0]*[2]+f[1]*f[1]+f[2]*f[0],依次类推f
=f[0]*f[n-1]+f[1]*f[n-2]+…+f[n-1]*f[0]。 这是卡特兰数的递推公式。
11、宇宙飞船有100,000位的存储空间,其中有一位有故障,现有一种Agent可以用来检测故障,每个Agent可以同时测试任意个位数,若都没有故障,则返回OK,若有一位有故障,则失去响应。如果有无限多个Agent可供使用,每个Agent进行一次检测需要耗费1小时,现在有2个小时时间去找出故障位,问最少使用多少个Agent就能找出故障。
这个问题是小白鼠从药瓶中检测出毒药的扩展。基本问题是只能进行一轮实验,找出故障,采用的方法是对每个位置对应到从1-100000的二进制编码,则总共需要log2100000上取整个bit,然后第一个agent检测第一位bit为1的,第二个agent检测第二位bit为1的,依次类推其他bit,最后根据返回false的位置为1,返回OK的位置为0,就可以得出出故障的位置的2进制编码。
这里的问题扩展成可以进行两轮实验。那么采用的方法是对每个位置对应到从1-100000的三进制编码,则总共需要log3100000上取整个位,然后第一个agent检测第一位为2的,第二个agent检测第二位为2的,依次类推其他位,当第一轮检测结束时,我们只能知道出故障的位置对应的三进制编码哪些位是2,其他未知的位可能为1或者0,下面进行第二轮检测(就递归到上面的基本问题):把那些返回OK的agent再一起检测相应位上为1的,当第二轮检测结束,我们就可以知道哪些是1哪些是0.
总共12道填空题,还有一道太复杂,题目很长,还有示意图,看不懂更不会做,没有记录下来。
大题:
1、 n个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(n
logk)
借助一个大小为k的最大堆,建堆的复杂度为O(k),之后如果每个都和堆的根节点比较并且更新堆,则复杂度是O(nlgk)
2、 写程序输出8皇后问题的所有排列,要求使用非递归的深度优先遍历
3、 有n个作业,a1,a2…..an,作业aj的处理时间为tj,产生的效益为pj,最后完成期限为dj,作业一旦被调度则不能中断,如果作业aj在dj前完成,则获得效益pj,否则无效益。给出最大化效益的作业调度算法
应该用动态归纳。
相关文章推荐
- CALayer控件(通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等)
- linux安装QQ
- Spring dataSource
- html5与html4区别
- IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
- eclipse快捷键
- POJ 2299 Ultra-QuickSort
- IDW插值服务
- 协程是什么
- natural language processing
- HDU 1069(Monkey and Banana)动态规划
- Visual studio 2015 community + Windows Driver Kit 10 +Vmware 11 配置驱动开发环境
- POJ 1703 种类并查集
- 关于SQLite的基本使用
- SQLite多线程使用总结
- UIScreen获取两种类型画面尺寸
- cookie对象及其应用:
- Zynq Qspi控制器应用笔记
- Js创建对象的做法
- iOS 9应用开发教程之使用代码添加按钮美化按钮