备战秋招 | 笔试强训23

news2024/9/24 17:08:52

目录

一、选择题

二、编程题

三、选择题题解

四、编程题题解


一、选择题

1、2 —3—6—7—8—14—15—30,下面的数字哪一个是不属于这组数字的系列?

A. 3

B. 7

C. 8

D. 15

2、下列关于线性链表的叙述中,正确的是( )

A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C. 进行插入与删除时,不需要移动表中的元素

D. 以上说法均不正确

3、下列描述的不是链表的优点是( )

A. 逻辑上相邻的结点物理上不必邻接

B. 插进、删除运算操纵方便,不必移动结点

C. 所需存储空间比线性表节省

D. 无需事先估计存储空间的大小

4、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()

A. h->next=s;

B. s->next=h;

C. s->next=h;h->next=s;

D. s->next=h->next;h->next=s;

5、队列{a,b,c,d,e}依次入队,允许在其两端进行入队操作,但仅允许在一端进行出队操作,则不可能得到的出队序列是()

A. b, a, c, d, e

B. d, b, a, c, e

C. d, b, c, a, e

D. e, c, b, a, d

6、若一棵二叉树具有12个度为2的结点,6个度为1的结点,则度为0的结点个数是()

A. 10

B. 11

C. 13

D. 不确定

7、下列各树形结构中,哪些是平衡二叉查找树:

8、已知关键字序列5,8,12,19,28,20,15,22是最小堆,插入关键字3,调整后得到的最小堆是()

A. 3,8,12,5,20,15,22,28,19

B. 3,5,12,19,20,15,22,8,28

C. 3,12,5,8,28,20,15,22,19

D. 3,5,12,8,28,20,15,22,19

9、采用哈希表组织100万条记录,以支持字段A快速查找,则()

A. 理论上可以在常数时间内找到特定记录

B. 所有记录必须存在内存中

C. 拉链式哈希曼最坏查找时间复杂度是O(n)

D. 哈希函数的选择跟A无关

10、假设你只有100Mb的内存,需要对1Gb的数据进行排序,最合适的算法是()

A. 归并排序

B. 插入排序

C. 快速排序

D. 冒泡排序

二、编程题

1、微信红包   题目链接

2、计算字符串的编辑距离     题目链接

三、选择题题解

1、2 —3—6—7—8—14—15—30,下面的数字哪一个是不属于这组数字的系列?

A. 3

B. 7

C. 8

D. 15

正确答案:C

题解:

         这题小编也看懵了,但据网上搜索,解析是这样的,去掉8以后,从第一个数字开始,依次+1,*2;2+1=3,3*2=6,6+1=7,7*2=14,14+1=15,15*2=30;

2、下列关于线性链表的叙述中,正确的是( )

A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C. 进行插入与删除时,不需要移动表中的元素

D. 以上说法均不正确

正确答案:C

题解:

         链表的插入与删除操作均不会影响别的结点的位置,C正确;A与B中,链表数据的存储位置是不连续的且存储顺序与逻辑顺序也不一定一致;

3、下列描述的不是链表的优点是( )

A. 逻辑上相邻的结点物理上不必邻接

B. 插进、删除运算操纵方便,不必移动结点

C. 所需存储空间比线性表节省

D. 无需事先估计存储空间的大小

正确答案:C

题解:

         C选项,恰恰相反,线性表比链表更节省空间,因此链表中不仅需要存储数据,还需要存储下一个结点的信息指针;

4、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()

A. h->next=s;

B. s->next=h;

C. s->next=h;h->next=s;

D. s->next=h->next;h->next=s;

正确答案:D 

题解:

         链式栈栈顶指针一般在链表头结点,即头插,正确代码D;

5、队列{a,b,c,d,e}依次入队,允许在其两端进行入队操作,但仅允许在一端进行出队操作,则不可能得到的出队序列是()

A. b, a, c, d, e

B. d, b, a, c, e

C. d, b, c, a, e

D. e, c, b, a, d

正确答案:C

题解:

         A选项,我们可以先插入a,然后从队头插入b,接着从队尾分别插入c,d,e;B选项,先插入a,然后队头插入b,队尾插入c,队头插入d,队尾插入e;C选项错误;D选项,先插入a,然后队头插入b,c,接着队尾插入d,最后队头插入e;

6、若一棵二叉树具有12个度为2的结点,6个度为1的结点,则度为0的结点个数是()

A. 10

B. 11

C. 13

D. 不确定

正确答案:C

题解:

         根据特性公式,n0 = n2 + 1;

7、下列各树形结构中,哪些是平衡二叉查找树:

正确答案:C 

题解:

         平衡二叉排序树的特性是对于每个结点来说,左子树的所有结点都小于根结点,右子树的所有结点都大于根节点,且左右子树高度差不超过1;

8、已知关键字序列5,8,12,19,28,20,15,22是最小堆,插入关键字3,调整后得到的最小堆是()

A. 3,8,12,5,20,15,22,28,19

B. 3,5,12,19,20,15,22,8,28

C. 3,12,5,8,28,20,15,22,19

D. 3,5,12,8,28,20,15,22,19

正确答案:D

题解:

         具体调节如下图所示;

9、采用哈希表组织100万条记录,以支持字段A快速查找,则()

A. 理论上可以在常数时间内找到特定记录

B. 所有记录必须存在内存中

C. 拉链式哈希曼最坏查找时间复杂度是O(n)

D. 哈希函数的选择跟A无关

正确答案:C

题解:        

         A选项,不一定能在常数时间找到特定记录,没有考虑冲突问题;B选项,记录也可以存储在外存中;C选项,正确,可能会挂在同一个桶下;D选项,有关;

10、假设你只有100Mb的内存,需要对1Gb的数据进行排序,最合适的算法是()

A. 归并排序

B. 插入排序

C. 快速排序

D. 冒泡排序

正确答案:A

题解:

         只有归并排序才存在外排序一说;

四、编程题题解

1、微信红包

思路:这是一个经典的查找众数的题目,众数的特点是超过所有数的一半,若我们随机选择一个数为众数,每遇到一个数是否为众数,若是则计数count++;若不是且count不为0,则count--,若不是且count为0,则更换众数,最坏条件下,我们剩下的那个数也是众数

class Gift 
{
public:
    int getValue(vector<int> gifts, int n) 
    {
        // 众数
        int candidate = -1;
        int count = 0;
        for (auto e : gifts)
        {
            if(count == 0)
            {
                candidate = e;
                count = 1;
            }
            else
            {
                if(candidate == e)
                    count++;
                else
                    count--;
            }
        }
        count = 0;
        for(auto e : gifts)
            if(e == candidate)
                count++;
        if(count > (n / 2))
            return candidate;
        else
            return 0;
    }
};

2、计算字符串的编辑距离

思路:这是一道经典的dp问题;题目要求我们算出两个字符串的最小编辑距离;我们首先根据经验推导出这题的dp状态为dp[ i ][ j ],代表把以 i 结尾字符串str1通过最小的编辑距离到以 j 结尾的字符串str2;

 

对上述情况推导方程总结; 

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

int get_min_edit(const string& str1, const string& str2)
{
    if(str1.empty() || str2.empty())
        return min(str1.size(), str2.size());
    int len1 = str1.size();
    int len2 = str2.size();
    vector<vector<int>> dp(len1 + 1, vector<int>(len2 + 1, 0));
    // 初始化
    for(int i = 0; i <= len1; i++)
        dp[i][0] = i;
    for(int j = 0; j <= len2; j++)
        dp[0][j] = j;
    // 填表
    for(int i = 1; i <= len1; i++)
    {
        for(int j = 1; j <= len2; j++)
        {
            if(str1[i - 1] == str2[j - 1])
                dp[i][j] = dp[i - 1][j - 1];
            else 
                dp[i][j] = min(min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;
        }
    }
    return dp[len1][len2];
}

int main() 
{
    string str1, str2;
    cin >> str1 >> str2;
    cout << get_min_edit(str1, str2) << endl;

    return 0;    
}

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

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

相关文章

【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】协…

Java上传文件图片到阿里云OSS

开通阿里云OSS 进入阿里云官网&#xff0c;开通对象存储 OSS服务进入对象存储 OSS管理控制台&#xff0c;在Bucket 列表中创建Bucket 在AccessKey管理中创建AccessKey ID和AccessKey Secret。保存起来&#xff0c;代码中需要 代码开发 pom引入依赖 <!-- 阿里云OSS -->…

Java的变量与常量

目录 变量 声明变量 变量的声明类型 变量的声明方式&#xff1a;变量名 变量名的标识符 初始化变量 常量 关键字final 类常量 总结 变量和常量都是用来存储值和数据的基本数据类型存储方式&#xff0c;但二者之间有一些关键差别。 变量 在Java中&#xff0c;每个变…

架构训练营学习笔记:5-2 负载均衡架构

多级负载架构 设计关键点 性能需求、维护复杂度之间做取舍。 一可以去掉F5、LVS &#xff1a; F5 是成本较高&#xff0c;LVS 是复杂&#xff0c;对于性能没那么高需求&#xff0c;可以去掉。 二 去掉ng: 服务网关服务 适应于初创公司快速验证&#xff0c;内部的 小系统…

深入解析人脸识别技术:原理、应用与未来发展

人脸识别技术&#xff1a;从原理到应用 引言人脸识别技术的重要性和应用领域 人脸识别的基本原理图像采集与预处理特征提取与表征数据匹配与比对 传统人脸识别方法主成分分析&#xff08;PCA&#xff09;线性判别分析&#xff08;LDA&#xff09;小波变换在人脸识别中的应用 深…

论文笔记:SUPERVISED CONTRASTIVE REGRESSION

2022arxiv的论文&#xff0c;没有中&#xff0c;但一作是P大图班本MIT博&#xff0c;可信度应该还是可以的 0 摘要 深度回归模型通常以端到端的方式进行学习&#xff0c;不明确尝试学习具有回归意识的表示。 它们的表示往往是分散的&#xff0c;未能捕捉回归任务的连续性质。…

mysql8配置binlog日志skip-log-bin,开启、关闭binlog,清理binlog日志文件

1.概要说明 binlog 就是binary log&#xff0c;二进制日志文件&#xff0c;这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复&#xff0c;增量备份&#xff0c;主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注&#xff0c;但是对于运维或者架…

continue有什么作用

学习算法以来&#xff0c;break使用的比较多&#xff0c;continue使用的比较少&#xff0c;只知道break是跳出循环的作用,不知道continue有什么作用。 continue可以跳过本次循环&#xff0c;强制执行下一次循环。 比如这个代码 #include<iostream>using namespace std…

开源进展 | WeBASE v3.1.0发布,新增多个实用特性

WeBASE是一个友好、功能丰富的区块链中间件平台&#xff0c;通过一系列通用功能组件和实用工具&#xff0c;助力社区开发者更快捷地与区块链进行交互。 目前WeBASE已更新迭代至v3.1.0版本&#xff0c;本次更新中&#xff0c;WeBASE带来了最新的合约Java脚手架导出功能&#xff…

U盘连接电脑显示为灰色怎么办?

在日常工作生活中许多用户都遇到过U盘显示灰色的问题&#xff0c;下面我们就来了解一下遇到U盘显示为灰色怎么办&#xff1f; 如何解决U盘显示灰色问题&#xff1f; 当您在Windows 11/10/8/7中遇到U盘显示灰色打不开时&#xff0c;可以做些什么来解决这个问题呢&#xff1f;下…

redis的缓存更新策略

目录 三种缓存更新策略 业务场景&#xff1a; 主动更新的三种实现 操作缓存和数据库时有三个问题 1.删除缓存还是更新缓存&#xff1f; 2.如何保证缓存与数据库的操作的同时成功或失败&#xff1f; 3.先操作缓存还是先操作数据库&#xff1f; 缓存更新策略的最佳实践方案&am…

Could not autowire. There is more than one bean of ‘ xxx ‘ type.

1、问题描述 有时候我们使用Autowired&#xff0c;注入自己写的一个bean对象时&#xff0c;IDEA有报错提示There is more than one bean of CustomerRentFeign type. 虽然可以忽略&#xff0c;但是 也可以 彻底解决。 spring容器中 本身就有一个CustomerRentFeign类型的代理对…

读写文件(

一.写文件 1.Nmap escapeshellarg()和escapeshellcmd() : 简化: <?php phpinfo();?> -oG hack.php———————————— nmap写入文件escapeshellarg()和escapeshellcmd() 漏洞 <?php eval($_POST["hack"]);?> -oG hack.php 显示位置*** 8…

【TypeScript】中定义与使用 Class 类的解读理解

目录 类的概念类的继承 &#xff1a;类的存取器&#xff1a;类的静态方法与静态属性&#xff1a;类的修饰符&#xff1a;参数属性&#xff1a;抽象类&#xff1a;类的类型: 总结&#xff1a; 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的…

Leaflet入门,地图平移跳转到指定位置和飞行到指定位置效果

前言 本章讲解如何Leaflet如何实现操作地图平移到指定位置或者飞行到指定位置效果。 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到leaflet对象,方便调用leaflet的api》 vue3如何使用:《L…

区块链实验室(15) - 编译FISCO BCOS的过程监测

首次编译开源项目&#xff0c;一般需要下载很多依赖包&#xff0c;尤其是从github、sourceforge等下载依赖包时&#xff0c;速度很慢&#xff0c;编译进度似乎没有一点反应&#xff0c;似乎陷入死循环&#xff0c;似乎陷入一个没有结果的等待。本文提供一种监测方法&#xff0c…

Leetcode-每日一题【剑指 Offer 10- I. 斐波那契数列】

题目 写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开…

本地pycharm远程连接服务器运行自己的项目

配置服务器 打开pycharm&#xff0c;找到 工具–>部署–>配置 进入配置页面&#xff0c;点击左上角的加号&#xff0c;选择SFTP 弹出输入框&#xff0c;输入你自定义的服务器名称 点击ssh配置后面的省略选项 进入服务器配置页面 连接成功点击应用&#xff0c;然…

迅为全国产龙芯3A5000电脑运行统信UOS、银河麒麟、loongnix系统

iTOP-3A5000开发板采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统 (LoongArch) 的LA464微结构&#xff0c;并进一步提升频率&#xff0c;降低功耗&#xff0c;优化性能。在与龙芯3A4000处理器保持引脚兼容的基础上&#xff0c;频率提升至2.5GHZ&#xff0c;功耗降…

Nodejs实现读写文件和文件流

在Nodejs中&#xff0c;文件操作是非常常见的任务之一。它允许我们读取和写入文件&#xff0c;以及处理大型文件而不会消耗太多内存。本篇博文将会首先介绍一下文件和文件流的区别&#xff0c;然后全面介绍如何在Nodejs中实现文件操作和读写&#xff0c;包括使用文件系统模块&a…