1.设无向图的顶点个数为n,则该图最多有多少条边?
n (n-1) /2
不同于以上答案
n (n+1) /2
n-1
n
每个顶点都可以与其它点相连,那么有n-1条边。总共有n个点,所以是n(n-1),而这样每个边又都多算了一遍,再除以二,答案:n(n-1)/2
(有相图的顶点个数为n,则该图最多有n(n-1)条边)
2.下述有关栈和队列的区别,说法错误的是?
A.栈和队列都属于线性表
B.口栈的插入操作时间复杂度都是o(1),队列的插入操作时间复杂度是o (n)
C.队列是限定只能在表的一端进行插入和在另一端进行删除操作。
D.栈是限定只能在表的一端进行插入和删除操作。
B错误:栈、队列的插入和删除操作时间复杂度应该都是O(1)
3.某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为(200 )
公式:叶子结点个数:n0,度为2的非叶子个数为n2,
则:n0=n2+1;
4.从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……描述的是(递归)
:递归就是将问题最小化! 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
5.对于顺序存储的线性表,访问结点和增加结点的时间复杂度为()
顺序存储是指用物理上相邻的单元存储线性表的元素,简单 的说就是可以用数组实现。
访问节点只需要下标,所以是O(1),
增加和删除节点要整体移动目标元素后面的元素,最坏的情况是N次,所以是O(n)。
6.链接:https://www.nowcoder.com/questionTerminal/727e52ef25c44994b3af624dc8a3fad4
来源:牛客网
(1)哈希函数的构造方法:
①数字分析法
②平方取中法
③除留取余法
④分段叠加法
(2)处理冲突的方法:
①开放地址法(包括线性探测法、二次探测法、伪随机探测法)
②链地址法
③多重散列法
二、(1)春节期间小明使用微信收到很多个红包,非常开心。在查看
领取红包记录时发现,某个红包金额出现的次数超过了红包
总数的一半。请帮小明找到该红包金额。写出具体算法思路
和代码实现,要求算法尽可能高效。
给定一个红包的金额数组gifts及 它的大小n,请返回所求红
包的金额。
若没有金额超过总数的一半,返回0。
测试样例:
[1,2,3,2,2],5
返回: 2
import java.util.*;
public class Gift {
public int getValue(int