某公司笔试题,有点难度,大家来看看
1、对于以下算法及数据结构,你是否了解
(1) 不太清楚 (2) 听说过,但原理不太清楚 (3) 原理清楚,不过未曾真正用过 (4) 用该算法写过程序(如果知道一些原理,最好简单写一些自己的理解)
1.1 动态规划
1.2 KMP
1.3 堆排序
1.4 深度优先搜索
2、写出下列计算的复杂度(不用编写程序,说明复杂度即可)
2.1 从n个数里挑选出最大的数
2.2 对n个数用冒泡法进行排序
2.3 对n个数用堆排序或快速排序
3、给出三个正整数K,M,N,求M的K次方除以N的余数(伪代码即可),K,M,N均为2-10000之间的整数,请考虑溢出问题。
4、编程计算100000的阶乘末尾0的个数,伪代码或讲明思路即可(提供估算方法也可以)(5的阶乘=120,末尾有1个0)
5、从2^32 - 1个无序的Int64中,找到中位数(排序后,处于最中间的那个数),你会采取什么样的办法。(假设数据读取的速度很快,方法请酌情考虑运算复杂度及空间复杂度)