数据结构:阶段测试(查漏补缺)

目录

选择题:

题一:

题二:

题三:

题四:

编程题:

题一:左叶子之和

思路一:

题二:约瑟夫问题(用单链表实现)

思路一:

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题:

题一:

1.将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为() 

A. O(m)

B. O(1)

C. O(n)

D. O(m+n)

答案解析:

        长度为n的单链表链接长度为m的单链表只需要长度为m的单链表的头节点的地址,所以时间复杂度还是O(n)。

题二:

2.以下属于链表的优点的是( )

A. 用数组可方便实现

B. 插入操作效率高

C. 不用为节点间的逻辑关系而增加额外的存储开销

D. 可以按元素号随机访问

答案解析:

        链表插入不需要挪动数据,所以插入效率高。

题三:

3.对于序列{ 12,13,11,18,60,15,7,19,25,100 },用筛选法建堆,应该从值为()的数据开始建初始堆

A. 100

B. 12

C. 60

D. 15

答案解析:

        一共有10个数据,下标为0--9,建堆需要从最后一层的父节点开始,所以,最后一个元素的父节点为:(9 - 1) / 2 = 4,以4为下标的元素为60.

题四:

4.将整数数组( 7-6-3-5-4-1-2 )按照堆排序的方式进行升序排列,请问在第一轮排序结束之后,数组的顺序是()

A. 1-2-3-4-5-6-7

B. 2-6-3-5-4-1-7

C. 6-5-3-2-4-1-7

D. 5-4-3-2-1-6-7

答案解析:

        堆排序实现参考:数据结构:一篇拿捏十大排序(超详细版)-CSDN博客可知C正确。

编程题:

题一:左叶子之和

左叶子之和_牛客题霸_牛客网 (nowcoder.com)

思路一:

        第一步:首先:判断是否为空树;

        第二步:在确保当前节点左子树存在的情况下,判断当前节点的左子树的左子树和右子树是否为空,为空则记录当前节点的左子树的值;

        第三步:将当前节点继续遍历左子树和右子树进行递归遍历整棵树,将所有符合第二步的节点值记录,最后合并,返回。

int sumOfLeftLeaves(struct TreeNode* root ) 
{if(root == NULL){return 0;}int sum = 0;if(root->left && root->left->left == NULL && root->left->right == NULL){sum +=  root->left->val;}sum += sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);return sum;
}

题二:约瑟夫问题(用单链表实现)

约瑟夫环__牛客网 (nowcoder.com)

思路一:

        构建值为1~n的n个节点的循环链表2.实现约瑟夫环,借助cur从链表起始位置开始报数,因为约瑟夫环最终只剩余一个节点,即cur->next != cur时,说明链表中不止一个节点,则循环进行以下操作报数,即遍历链表,循环m-1次,循环停止时,cur即为报m的节点删除该节点,遍历时保存cur的前一个prev,删除cur,然后将cur放在prev的下一个;

        最后剩余的一个节点中的值域就是最后留下来的人。注意:在返回之后一定要把最后一个节点释放掉,否则会有内存泄漏。

#define _CRT_SECURE_NO_WARNINGS 1//约瑟夫问题#include <stdio.h>
typedef struct List
{struct List* front;int val;struct List* next;
}L;L* Init(int x)
{L* tmp = (L*)malloc(sizeof(L));tmp->val = x;tmp->next = NULL;tmp->front = NULL;return tmp;
}L* DeletNode(L* cur)
{L* old = cur->front;old->next = cur->next;old->next->front = old;L* new = old->next;free(cur);return new;
}int main()
{L l;L* prve = Init(0);L* count = prve;int n, m;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++){L* tmp = Init(i);tmp->front = prve;prve->next = tmp;prve = tmp;}prve->next = count->next;count->next->front = prve;L* cur = prve->next;free(count);while (cur->next != cur){for (int j = 0; j < m - 1; j++){cur = cur->next;}cur = DeletNode(cur);}printf("%d", cur->val);return 0;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170613.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSpeed: 大模型训练框架 | 京东云技术团队

背景&#xff1a; 目前&#xff0c;大模型的发展已经非常火热&#xff0c;关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大&#xff0c;动辄上百亿&#xff0c;如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…

Linux--进程等待

1.什么是进程等待 1.通过系统调用wait/waitid,来对子进程进行进行检测和回收的功能。 2.为什么有进程等待 1.对于每个进程来说&#xff0c;如果子进程终止&#xff0c;父进程没有停止&#xff0c;就会形成僵尸进程&#xff0c;导致内存泄露&#xff0c;为了防止僵尸进程的形成…

【JAVA基础】多线程与线程池

多线程与线程池 文章目录 多线程与线程池1. 相关概念1.1 线程调度1.2 守护线程 2. 生命周期3. 同步机制/同步锁3.1 synchronized3.2 lock3.3 synchronized 与 Lock 的对比 4. 死锁5. 线程通信5.1 线程间的通信5.2 等待唤醒机制5.3 举例5.4 调用 wait 和 notify 需注意的细节5.5…

进阶课4——随机森林

1.定义 随机森林是一种集成学习方法&#xff0c;它利用多棵树对样本进行训练并预测。 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器&#xff0c;每棵树都由随机选择的一部分特征进行训练和构建。通过多棵树的集成&#xff0c;可以增加模型的多样性和泛化能力。…

c++视觉检测------Shi-Tomasi 角点检测

Shi-Tomasi 角点检测 &#xff1a;goodFeaturesToTrack() goodFeaturesToTrack() 函数是 OpenCV 中用于角点检测的功能函数。它的主要作用是检测图像中的良好特征点&#xff0c;通常用于计算机视觉任务中的光流估算、目标跟踪等。 函数签名&#xff1a; void goodFeaturesTo…

pytorch实战---IMDB情感分析

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

Pytorch公共数据集、tensorboard、DataLoader使用

本文将主要介绍torchvision.datasets的使用&#xff0c;并以CIFAR-10为例进行介绍&#xff0c;对可视化工具tensorboard进行介绍&#xff0c;包括安装&#xff0c;使用&#xff0c;可视化过程等&#xff0c;最后介绍DataLoader的使用。希望对你有帮助 Pytorch公共数据集 torc…

vscode安装可以打开docx文件的插件

文章目录 vscode安装可以打开docx文件的插件去插件商城搜索并安装安装后打开一个word vscode安装可以打开docx文件的插件 去插件商城搜索并安装 安装后 打开一个word

脏牛提权 liunx

使用方法 Liunx 普通用户 内核版本 在版本里 我直接脏牛提权 有脚本查看内核版本 上传c脚本 编译 直接执行 获取高权限 提权 Liunx https://github.com/InteliSecureLabs/Linux Exploit Suggester 运行这个脚本 上传到客户端 https://github…

Unity Hub报错:No valid Unity Editor license found. Please activate your license.

最近 遇到一个问题&#xff0c;打开高版本时Hub抛出异常&#xff1a;No valid Unity Editor license found. Please activate your license. 首先你必须排除是否登录Unity Hub&#xff0c;并且激活许可证。 方法一&#xff1a;禁用网络&#xff08;这个可能无效&#xff09; …

如何通过卖虚拟资料月入10万?看这几个卖资料案例

我微信好友里&#xff0c;有近4000个是做创业博主的同行。 你可能会好奇&#xff0c;其中60%的人都通过卖虚拟资料起家&#xff0c;这到底说明了什么呢&#xff1f; 嗯&#xff0c;事实上&#xff0c;这就意味着这些人选择了网络赚钱的首选项目&#xff0c;那就是销售各种资料…

python selenium如何带cookie访问网站

python selenium如何带cookie访问网站 要使用Python的Selenium库带有cookie访问网站&#xff0c;你可以按照以下步骤进行操作&#xff1a; 一、流程介绍 安装Selenium库&#xff08;如果尚未安装&#xff09;&#xff1a; pip install selenium导入Selenium库并启动一个浏览…

导致爬虫无法使用的原因有哪些?

随着互联网的普及和发展&#xff0c;爬虫技术也越来越多地被应用到各个领域。然而&#xff0c;在实际使用中&#xff0c;爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因&#xff0c;并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…

11 个最值得推荐的 Windows 数据恢复软件

您可能已经尝试过许多免费的恢复程序&#xff0c;但它们都不起作用&#xff0c;对吧&#xff1f;这就是您正在寻找最好的数据恢复软件的原因。 个人去过那里。根据个人的经验&#xff0c;大多数免费软件并不能解决这个问题。有时&#xff0c;当个人在 PC 上运行恢复程序时&…

【API篇】七、Flink窗口

文章目录 1、窗口2、分类3、窗口API概览4、窗口分配器 在批处理统计中&#xff0c;可以等待一批数据都到齐后&#xff0c;统一处理。但是在无界流的实时处理统计中&#xff0c;是来一条就得处理一条&#xff0c;那么如何统计最近一段时间内的数据呢&#xff1f; ⇒ 窗口的概念&…

选择合适的项目管理系统来支持专业产品研发团队

专业产品研发团队的公司离不开其严谨的管理和高效的研发流程&#xff0c;为了进一步提升研发效率和管理水平&#xff0c;产研团队需要一个全流程的项目管理系统来支持其研发团队的协同合作。 一、系统需求 IT行业的研发工作涵盖了从立项、项目变更到项目的进程计划等多个环节。…

B-tree(PostgreSQL 14 Internals翻译版)

概览 B树(作为B树访问方法实现)是一种数据结构&#xff0c;它使您能够通过从树的根向下查找树的叶节点中所需的元素。为了明确地标识搜索路径&#xff0c;必须对所有树元素进行排序。B树是为有序数据类型设计的&#xff0c;这些数据类型的值可以进行比较和排序。 下面的机场代…

OpenCV视频车流量识别详解与实践

视频车流量识别基本思想是使用背景消去算法将运动物体从图片中提取出来&#xff0c;消除噪声识别运动物体轮廓&#xff0c;最后&#xff0c;在固定区域统计筛选出来符合条件的轮廓。 基于统计背景模型的视频运动目标检测技术&#xff1a; 背景获取&#xff1a;需要在场景存在…

基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。

目录 演示视频 基本介绍 论文截图 功能结构 系统截图 演示视频 基本介绍 基于PHP的线上购物商城&#xff0c;MySQL数据库&#xff0c;PHPstudy&#xff0c;原生PHP&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万五千字论文。 现如今,购物网站是商业…

【七】SpringBoot为什么可以打成 jar包启动

SpringBoot为什么可以打成 jar包启动 简介&#xff1a;庆幸的是夜跑的习惯一直都在坚持&#xff0c;正如现在坚持写博客一样。最开始刚接触springboot的时候就觉得很神奇&#xff0c;当时也去研究了一番&#xff0c;今晚夜跑又想起来了这茬事&#xff0c;于是想着应该可以记录一…