每日一题练习 day01

本文是关于图论和数据结构的每日一题解析,涵盖无向图的最大边数、栈与队列的区别、二叉树的性质、递归概念以及线性表的访问和操作时间复杂度。同时讨论了哈希函数构造方法和冲突解决策略,并提出寻找红包金额和链表分割的算法问题。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值