发布于 2014-10-20 06:24:01 | 607 次阅读 | 评论: 0 | 来源: 网友投递
美团网
2010年3月4日成立的团购网站。美团网有着“美团一次,美一次”的宣传口号。为消费者发现最值得信赖的商家,让消费者享受超低折扣的优质服务;为商家找到最合适的消费者,给商家提供最大收益的互联网推广。
1、用O(n)的算法,实现对一组无序的字母进行从小到大排序(区分大小写),相同的字母,小写在大写前
2、给定N个磁盘,每个磁盘大小为D[i],i=0...N-1,现在要在这N个磁盘上"顺序分配"M个分区,每个分区大小为P[j], j=0....M-1,顺序分配的意思是:分配一个分区P[j]时,如果当前磁盘剩余空间足够,则在当前磁盘分配;如果不够,则尝试下一个磁盘,直到找到一个磁盘D[i+k]可以容纳该分区,分配下一个分区P[j+1]时,则从当前磁盘D[i+k]的剩余空间开始分配,不在使用D[i+k]之前磁盘末分配的空间,如果这M个分区不能在这N个磁盘完全分配,则认为分配失败,请实现函数,is_allocable判断给定N个磁盘(数组D)和M个分区(数组P),是否会出现分配失败的情况。
举例:磁盘为[120,120,120],分区为[60,60,80,20,80]可分配 ,如果为[60,80,80,20,80]则分配失败
3、给定正整数X,定义函数A(n)=1+x+x^2+x^3+...+x^n(n为整数且>=0),已知乘运算的时间远大于加运算,输入x,n:如何尽可能快的求出A(n)
4、请实现方法:print_rotate_matrix(int matrix,int n),来将一个n X n二维数组
5、已知队列支持先进先出的操作(add/remove),而栈则直技先进后出的操作push/pop,请用两个队列实现栈先进后出的操作,希望该栈的push/pop时间复杂度尽量小。请写出push/pop的代码,需要考虑栈溢出(stackoverflow)的情况
6、假设有一个中央调度机,有n个相同的任务需要调度到m台服务器上去执行,由于每台服务器的配置不一样,因此服务器执行一个任务所花费的时间也不同。现在假设第i个服务器执行一个任务所花费的时间也不同。现在假设第i个服务器执行 一个任务需要的时间为t[i].
例如:有2个执行机a,b,执行一个任务分别需要7min,10min,有6个任务待调度。如果平分这6个任务,即a,b各3个任务,则最短需要30min执行完所有。如果a分4个任务 ,b分2个任务,则最短28min执行完。 请设计调度算法,使得所有任务完成所需要的时间最短。
7、n(1,2,3.....n)个元素有N!个不同的排列,将这n!个数按字典序排列,并编号0,1...n!-1,每个排号为其字典序的值,如 n=3时,字典排序为123,132,213,231,312,321,这6个数的字典序分别为0,1,2,3,4,5.,现给定n,请输出字典序为k 的排列(0<=k<n!)