备战秋招 | 笔试强训21

news2024/11/17 13:50:32

目录

一、选择题

二、编程题

三、选择题题解

四、编程题题解


一、选择题

1、设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度()

A. O(log2n)

B. O(1)

C. O(n2)

D. O(n)

2、在一个单链表中,若删除 P 所指结点的后续结点,则执行?

A. p = p->next;p->next = p->next->next;

B. p->next = p->next;

C. p->next = p->next->next;

D. p = p->next->next

3、设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间

A. 带头结点的双循环链表

B. 单循环链表

C. 带尾指针的单循环链表

D. 单链表

4、单链表实现的栈,栈顶指针为Top(仅仅是一个指针),入栈一个P节点时,其操作步骤为()

A. Top->next=p;

B. p->next=Top->next;Top->next=p;

C. p->next=Top;Top=p->next;

D. p->next=Top;Top=Top->next;

5、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()

A. 仅修改队头指针

B. 仅修改队尾指针

C. 队头、队尾指针都可能要修改

D. 队头、队尾指针都要修改

6、在具有 2n 个结点的完全二叉树中,叶子结点个数为()

A. n

B. n+1

C. n-1

D. n/2

7、在任意一棵非空二叉排序树T1中, 删除某结点v之后形成二叉排序树 T2,再将v 插入T2形成二叉排序树T3。下列关于T1与T3的叙述中,正确的是( )。

I.若 v 是 T1的叶结点,则 T1 与 T3 不同

II. 若 v 是 T1的叶结点,则 T1与 T3相同

III.若 v 不是 T1 的叶结点,则 T1 与 T3 不同

IV.若v 不是 T1 的叶结点,则 T1 与 T3 相同

A. 仅 I、 III

B. 仅 I、 IV

C. 仅 II、 III

D. 仅 II、 IV

8、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()

A. 二叉排序树

B. 哈夫曼树

C. AVL树

D. 堆

9、散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。由于散列函数不是一对一的关系,所以选择好的( )方法是散列文件的关键。

A. 散列函数

B. 除余法中的质数

C. 冲突处理

D. 散列函数和冲突处理

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

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

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

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

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

二、编程题

1、洗牌   题目链接

2、MP3光标位置   题目链接

三、选择题题解

1、设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度()

A. O(log2n)

B. O(1)

C. O(n2)

D. O(n)

正确答案:D

题解:

         要想插入一个结点保持链表有序就得找到比该节点小的那一个结点,故需要遍历单链表,遍历链表的时间复杂度为O(N),故选D;

2、在一个单链表中,若删除 P 所指结点的后续结点,则执行?

A. p = p->next;p->next = p->next->next;

B. p->next = p->next;

C. p->next = p->next->next;

D. p = p->next->next

正确答案:C

题解:

    

 

3、设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间

A. 带头结点的双循环链表

B. 单循环链表

C. 带尾指针的单循环链表

D. 单链表

正确答案:A

题解:

         我们的诉求是最节省时间,当尾部插入结点时我们需要找到最后一个节点,当我们删除最后一个结点时,我们得同时知道倒数第二个结点;

4、单链表实现的栈,栈顶指针为Top(仅仅是一个指针),入栈一个P节点时,其操作步骤为()

A. Top->next=p;

B. p->next=Top->next;Top->next=p;

C. p->next=Top;Top=p->next;

D. p->next=Top;Top=Top->next;

正确答案:B

题解:

         我们根据题目知top仅仅只是一个指针,不存数据,当我们实现链栈时,我们肯定选择头部作为栈顶,因为单链表的头插与头删效率最高,具体如下图;

5、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()

A. 仅修改队头指针

B. 仅修改队尾指针

C. 队头、队尾指针都可能要修改

D. 队头、队尾指针都要修改

正确答案:C

题解:

         一般情况下,链式队列出队操作只会修改队头结点,但是如果队列中只有一个结点时,如果我们出队,可能也会修改队尾指针;

6、在具有 2n 个结点的完全二叉树中,叶子结点个数为()

A. n

B. n+1

C. n-1

D. n/2

正确答案:A

题解:

         根据二叉树的性质,我们可以得到公式n0 = n2 + 1;且n2 + n1 + n0 = 2n;其中n1是只有一个孩子的分支结点,要么为1要么为0,根据这三点求得n0 = n;

7、在任意一棵非空二叉排序树T1中, 删除某结点v之后形成二叉排序树 T2,再将v 插入T2形成二叉排序树T3。下列关于T1与T3的叙述中,正确的是( )。

I.若 v 是 T1的叶结点,则 T1 与 T3 不同

II. 若 v 是 T1的叶结点,则 T1与 T3相同

III.若 v 不是 T1 的叶结点,则 T1 与 T3 不同

IV.若v 不是 T1 的叶结点,则 T1 与 T3 相同

A. 仅 I、 III

B. 仅 I、 IV

C. 仅 II、 III

D. 仅 II、 IV

正确答案:C

题解:

         可画图理解,答案选C;

8、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()

A. 二叉排序树

B. 哈夫曼树

C. AVL树

D. 堆

正确答案:D

题解:

         只有堆才可能会任意节点到根是有序的,如大堆,父节点肯定比子节点大;小堆,父节点肯定比子结点小;

9、散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。由于散列函数不是一对一的关系,所以选择好的( )方法是散列文件的关键。

A. 散列函数

B. 除余法中的质数

C. 冲突处理

D. 散列函数和冲突处理

正确答案:D

题解:

         要完成散列文件必须使用一个契合的哈希函数减少冲突,在冲突出现后也也可以处理冲突;

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

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

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

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

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

正确答案:C

题解:

         以下为一轮排序的步骤;

四、编程题题解

1、洗牌 

思路:本题是一道模拟题,看着题目很复杂实际非常简单,一轮洗牌就是将后一半的牌与前一半的牌从后往前依次重新排序;

#include <iostream>
#include <vector>

using namespace std;

int main() 
{
    int T = 0;
    cin >> T;
    // T组数据
    while(T--)
    {
        int n, k;
        cin >> n >> k;
        vector<int> cards;
        cards.resize(2 * n, 0);
        for(int i = 0; i < 2 * n; i++)
        {
            cin >> cards[i];
        }
        // 经过k次洗牌
        while(k--)
        {
            int end1 = n - 1;
            int end2 = 2 * n - 1;
            int end = 2 * n - 1;
            vector<int> tmp(2 * n, 0);
            while(end1 >= 0)
            {
                tmp[end--] = cards[end2--];
                tmp[end--] = cards[end1--];
            }
            cards.swap(tmp);
        }
        // 遍历
        for(auto e : cards)
            cout << e << " ";
        cout << endl;
    }
    return 0;
}

2、MP3光标位置

思路:本题也是一道模拟题,我们只要模拟出每一种情况即可;这种题的难度在于逻辑是否清晰;

#include <iostream>
#include <string>
using namespace std;

void print_song_list(int num, string& command)
{
    int begin = 1;
    int end = 0;
    int select = 1;
    if(num <= 4)
    {
        end = num;
        for(int i = 0; i < command.size(); i++)
        {
            if(command[i] == 'U')
            {
                select = select - 1;
                if(select == 0) select = num;
            }
            else 
            {
                select = select + 1;
                if(select == num + 1) select = 1;
            }
        }
    }
    else 
    {
        // 多页情况
        end = 4;
        for(auto ch : command)
        {
            if(ch == 'U')
            {
                // 向上分为三种情况
                // 1、当前光标在第一个位置
                // 2、当前光标与begin位置相同
                // 3、当前光标与begin位置不同
                if(select == 1)
                {
                    select = num;
                    begin = num - 4 + 1;
                    end = num;
                }
                else if(select == begin)
                {
                    select--;
                    begin--;
                    end--;
                }
                else 
                {
                    select--;
                }
            }
            else 
            {
                // 向下分为三种情况
                // 1、当前光标在第最后一个位置
                // 2、当前光标与end位置相同
                // 3、当前光标与end位置不同
                if(select == num)
                {
                    select = 1;
                    begin = 1;
                    end = 4;
                }
                else if(select == end)
                {
                    select++;
                    begin++;
                    end++;
                }
                else 
                {
                    select++;
                }
            }
        }
    }
    for(int i = begin; i <= end; i++)
        cout << i << " ";
    cout << endl;
    cout << select << endl;
}

int main() 
{
    int num;
    string command;
    cin >> num >> command;
    print_song_list(num, command);
    return 0;    
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络中通过IP地址查找位置

display ip routing-table 查看路由表 display vlan 查看vlan 信息 display stp brief 查看生成树信息 display mac-address 查看mac 地址表 display arp 查看arp表 SW1 SW2

海量小文件传输慢的原因以及对应的优化方案

在日常工作中&#xff0c;我们经常遇到需要传输一些小文件的情况&#xff0c;但是当小文件的数量很多的时候&#xff0c;为什么小文件传输的速度就会变得很慢呢&#xff1f;为什么复制许多较小的文件时&#xff0c;小文件传输效率就会降低呢&#xff1f;针对这些问题&#xff0…

MyBatis查询数据库(3)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 前面我们讲解了MyBatis增删改查基本操作&#xff0c;下面我们来深入了解M…

谷歌语音助手战略调整:开发 AI 新版,调整裁员计划

北京时间8月2日晚间&#xff0c;谷歌通过对 “谷歌助手” 团队进行调整和裁员&#xff0c;意图改变其开发方向。经过此次变动&#xff0c;谷歌计划借助最新的生成式人工智能技术和大型语言模型来提升 谷歌助手 的能力。此次调整表明语音助手市场未达到先前的预期。 亚马逊旗下的…

PT Industrial Security Incident Manager 扩展了对 Emerson 和 GE Fanuc 控制器的支持

&#x1f504; 我们发布了 PT Industrial Security Incident Manager (PT ISIM) 深度流程流量分析系统的下一套专业知识。 有哪些新功能&#xff1f; 1. 改进了 GE Fanuc (Emerson) GE-SRTP 协议的操作。该协议专为 GE Fanuc 控制器与工程软件&#xff08;Proficy Machine E…

ArmSoM-W3之RK3588安装Qt+opencv+采集摄像头画面

1. 简介 场景&#xff1a;在RK3588上做qt开发工作 RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 这里使用了OpenCV所带的库函数捕获摄像头的视频图像。 硬件环境&#xff1a; ArmSoM-RK3588开发板、&#xff08;MIPI-DSI&#xff09;摄像头 软件版本&#xff1a; OS&…

angular框架——node_modules引入ng-zorro-antd问题

发生错误 在安装npm包&#xff08;ng-zorro-antd&#xff09;的时候&#xff0c;报错如下 原因 项目依赖的ng-zorro-antd版本号和引用包的17.0.2版本号不一致&#xff0c;项目使用的16.13.1版本号太高了&#xff0c;无法解析依赖树中低版本。 解决方案 &#xff1a; 命令修…

pointpillars的demo过程记录

1、进入pp conda activate pp 2、cd到/home/fyy/OpenPCDet-master/tools打开终端 python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt /home/fyy/OpenPCDet-master/pointpillar_7728\ \(1\).pth --data 000009.bin 直接就可以demo显示了

数据库同步时,通过存储过程找出时间内发生变化的视图和物化视图

1. 应用场景 在软件开发或数据库运维过程&#xff0c;每一次数据库同步都是运维人员的痛苦的过程。 如果每次都是无脑全量更新&#xff0c;则工作量较大如果每次都是增量更新&#xff0c;则需要知道哪些视图谁在什么时候修改了&#xff0c;增加了什么信息&#xff08;因为往往…

(学习笔记-内存管理)内存满了会发生什么?

内存分配过程 应用程序通过 malloc 函数申请内存的时候&#xff0c;实际上申请的是虚拟内存&#xff0c;此时并不会分配物理内存。 当应用程序读写了这块虚拟内存&#xff0c;CPU就会去访问这个虚拟内存&#xff0c;这时会发现这个虚拟内存没有映射到物理内存&#xff0c;CPU…

【WiFi】国产WiFi芯片

目录 1.概述 2.WiFi芯片的市场格局 3.中国的WiFi芯片公司 3.1.华为海思 3.2.乐鑫科技 3.3.博通集成 3.4.紫光展锐 3.5.康希通信 3.6.南方硅谷 4.国产WiFi芯片竞争格局 4.1.内卷WiFi 4 4.2.缺席WiFi 5 4.3.发力WiFi 6 4.4.逐鹿WiFi 7 5.不得不提的WiFi FEM 1.概述…

视频创作者福音,蝰蛇峡谷NUC12SNKI7视频剪辑测评

英特尔NUC绝对是PC市场里最为特殊的产品&#xff0c;相比众多OEM设计制造的台式机而言&#xff0c;英特尔NUC主打小体积、高度集成化、强扩展性以及尽可能优异的性能表现。尤其是在主打游戏体验的NUC产品出现之后&#xff0c;更是将极致体验演绎到了极致。 在搭载独显的幻影峡谷…

Python爬虫教程篇+图形化整理数据(数学建模可用)

一、首先我们先看要求 1.写一个爬虫程序 2、爬取目标网站数据&#xff0c;关键项不能少于5项。 3、存储数据到数据库&#xff0c;可以进行增删改查操作。 4、扩展&#xff1a;将库中数据进行可视化展示。 二、操作步骤&#xff1a; 首先我们根据要求找到一个适合自己的网…

gitlab CI/CD 安装 gitlab runner

一、为什么需要安装gitlab runner &#xff1f; 极狐GitLab Runner 极狐GitLab Runner 是在流水线中运行作业的应用&#xff0c;与极狐GitLab CI/CD 配合运作。 说白了就是你部署的一个agent。 二、如何安装&#xff1f; 1.介绍通过helm部署github runner 2.helm添加仓库 h…

k8s kubeedge安装metrics-server监控节点cpu内存使用情况

k8s kubeedge安装metrics-server监控节点cpu内存使用情况 官方安装地址: https://kubeedge.io/en/docs/advanced/metrics/ k8s的master节点上安装metrics-server #在k8s的master节点上执行#创建目录 mkdir metrics-server #下载deploy文件 wget https://github.com/kubernet…

ansible安装及rhel8仓库配置

目录 一、本地仓库 问题&#xff1a; 解决&#xff1a; 1.创建一个仓库&#xff1a; 内容&#xff1a; 2.挂载&#xff1a; 挂载&#xff1a; 测试&#xff1a; 3.或者直接使用阿里云的源 二.配置ansible仓库 1.下载&#xff1a; 2.检查 一、本地仓库 问题&#xff1a; 当…

史上最细,接口自动化测试框架-Pytest+Allure+Excel整理(代码)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Allure框架 Allu…

第一百二十天学习记录::计算机硬件技术基础:存储器及存储管理

分级存储器系统 存储器从内到外分为四级&#xff1a;内部寄存器、高速缓冲存储器、内存储器和外存储器。它们在存取速度上逐级递减&#xff0c;在存储容量上逐级递增。 内部寄存器 内部寄存器是计算机处理器内部的一种高速缓存&#xff0c;是用来存储临时数据和指令等信息的…

python与深度学习(十四):CNN和IKUN模型二

目录 1. 说明2. IKUN模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章猫狗大战训练的模型进行测试。…

opencv 31-图像平滑处理-方框滤波cv2.boxFilter()

方框滤波&#xff08;Box Filtering&#xff09;是一种简单的图像平滑处理方法&#xff0c;它主要用于去除图像中的噪声和减少细节&#xff0c;同时保持图像的整体亮度分布。 方框滤波的原理很简单&#xff1a;对于图像中的每个像素&#xff0c;将其周围的一个固定大小的邻域内…