《牛客》做题阶段二错题总结(二)

1. 逻辑题

有一个小白程序员,写了一个只能对5个数字进行排序的函数。现在有25个不重复的数字,请问小白同学最少调几次该函数,可以找出其中最大的三个数?

  此题非常有意思,对25个数随机分成5组,进行五次函数调用,得到ABCDE五个内部排好序的数列。
  最大的数a可以通过对A[1],B[1],C[1],D[1],E[1]调用函数获得。第二大的数b基于下面的逻辑推理:假设a,b位于同一组,则bA[2],否则bB[1]。第三大的数c基于下面的逻辑推理:假设b,c位于同一组,则c可能为A[3],B[2]否则为A[2],B[1],C[1]
  所以只需要再对A[2],B[1],C[1],A[3],B[2]调用该函数,就可以得到b,c

2. 图论相关

d = ( d 1 , d 2.... d n ) ,其中 di为非负整数,i=1,2,…n 。若存在n个顶点的(简单)无向图,使得顶点vi的度为 di,则称 d是可图解的。下面给出的各序列中哪个是可图解的?
A:(0,1,1,2,,3,3);

  该问题是Havel-Hakimi定理的考察,定理内容:由非负整数组成的有限非递增序列,S={d1,d2,d3…dn},当且仅当 S 1 = { d 2 1 , d 3 1... d d 1 + 1 1 , d d 1 + 2 . . . . . . d n } 也是可图的。不能出现负数
  实际动手,拿上题例子来说:

/*
重新非递增排序原序列:3 3 2 1 1 0
1. 删除3,后面3个数依次减1   2 1 0 1 0
2. 重新排序  2 1 1 0 0
3. 删除2,后面2个数依次减1   0 0 0 0
证明原序列可图解
*/

3. 线性表的平均查找长度

设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找并且索引表和块内均采用顺序查找,则其平均查找长度为( )。

  只要是涉及顺序查找,都应该直接按照(1+n)/2来得到平均查找长度,这个公式并不是近似,而是由 ( 1 + 2 + . . . . . n ) / n = ( 1 + n ) / 2 得到。

4. 逻辑问题

下面两段代码中for循环分别执行了多少次?

1.
unsigned short i,j;
for(i=0, j=2; i!=j; i+=5, j+=7)
{}

2.
unsigned short i,j;
for(i=3,j=7;i!=j;i+=3,j+=7)
{}

  追赶问题,i和j相差2,速度为i为5,j为7,设第k秒ij相遇,则 65536 2 = ( 7 5 ) k ,得k=32767。同理,第二个程序的循环次数为16383。

5. 哈夫曼树

若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为()

  通过回忆huffman树的构造过程,其一定只含有度为m和0的节点。假设非叶节点的个数为x个,由边的个数和节点数的关系得到: m x = x + n 1 x = ( n 1 ) / ( m 1 )

6. HTTP 请求方法总结

  摘自菜鸟教程:

方法 描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。

  具体信息,可以参考该博文HTTP请求方法详解

猜你喜欢

转载自blog.csdn.net/lovestackover/article/details/80953878