笔试强训48天——day23

news2024/12/23 1:52:48

文章目录

  • 一. 单选
    • 1.下面程序段的时间复杂度为()
    • 2. 下列关于线性链表的叙述中,正确的是( )
    • 3. 下列描述的不是链表的优点是( )
    • 4. 向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()
    • 5.队列{a,b,c,d,e}依次入队,允许在其两端进行入队操作,但仅允许在一端进行出队操作,则不可能得到的出
    • 6.若一棵二叉树具有12个度为2的结点,6个度为1的结点,则度为0的结点个数是()
    • 7. 下列各树形结构中,哪些是平衡二叉查找树:
    • 8. 已知关键字序列5,8,12,19,28,20,15,22是最小堆,插入关键字3,调整后得到的最小堆是()
    • 9. 采用哈希表组织100万条记录,以支持字段A快速查找,则()
    • 10.假设你只有100Mb的内存,需要对1Gb的数据进行排序,最合适的算法是()
  • 二. 编程
    • 1. 微信红包
    • 2.计算字符串的编辑距离

一. 单选

1.下面程序段的时间复杂度为()

forint i=0;i<m;i++forint j=0;j<n;j++)
a[i][j]=i*j;

在这里插入图片描述

正确答案:C

循环套循环就是m*n

 

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

A各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C 进行插入与删除时,不需要移动表中的元素
D 以上说法均不正确

正确答案:C

存储顺序与逻辑顺序可以完全没有关系,他们这件的有序靠的是指针
存储空间连续就不是链表了

 

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

A 逻辑上相邻的结点物理上不必邻接
B 插进、删除运算操纵方便,不必移动结点
C 所需存储空间比线性表节省
D 无需事先估计存储空间的大小
正确答案: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

 

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

 

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

A 10
B 11
C 13
D 不确定

正确答案:C

n0=n2+1=12+1=13

 

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

在这里插入图片描述

正确答案:C

 

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)——拉链式哈希表(顺序表+链表)最好是O(1)
D 哈希函数的选择跟A无关——A是整数用除留余数法,A是char,就是字符映射就不一定是除留余数法了

正确答案:C

 

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

A 归并排序
B 插入排序
C 快速排序
D 冒泡排序
正确答案:A

内存没有办法装这么多的数据,需要采用外部排序——归并排序

 
 

二. 编程

1. 微信红包

链接

春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数
超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组 gifts 及它的大小 n ,请返回所求红包的金额。
若没有金额超过总数的一半,返回0。

示例1:
输入
[1,2,3,2,2],5
输出
2

示例2:
输入
[1,1,2,2,3,3],6
输出
0

正确答案:

class Gift {
public:
    int getValue(vector<int> gifts, int n) {
        // write code here
        sort(gifts.begin(),gifts.end());
        //超过一半的数排序之后必然排在中间
        int mid = gifts[n/2];
        int count = 0;
        for(int i = 0;i<n;i++)
        {
            //统计排在中间的数的个数
            if(gifts[i] == mid)
            count++;
        }
        //如果个数大于一半,则存在超过一半的数
        if(count > n/2)
        return mid;
        else
        return 0;
    }
};

 

class Gift {
public:
    int getValue(vector<int> gifts, int n) {
        // write code here
        map<int,int> count;
        int mid = gifts.size()/2;
        for(const auto& e : gifts)
        ++count[e];

        for(const auto& e : count)
        {
            if(e.second >= mid)
            return e.first;
        }
        return 0;
    }
};

 
 

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

链接

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance 。

例如:
字符串A: abcdefg
字符串B: abcdef
通过增加或是删掉字符 ”g” 的方式达到目的。这两种方案都需要一次操作。把这个操作所需要的次数定义
为两个字符串的距离。
要求:
给定任意两个字符串,写出一个算法计算它们的编辑距离。

输入描述:
每组用例一共2行,为输入的两个字符串
输出描述:
每组用例输出一行,代表字符串的距离

示例1:
输入
abcdefg
abcdef
输出
1

正确答案:

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

int Min(const string &s1,const string &s2)
{
    // word与空串之间的编辑距离为word的长度
    if(s1.empty() || s2.empty())
    return max(s1.size(),s2.size());

    int l1 = s1.size();
    int l2 = s2.size();

    vector<vector<int>> f(l1+1,vector<int>(l2+1,0));
    for(int i = 0;i<=l1;i++)
    f[i][0] = i;
    for(int j = 0;j<=l2;j++)
    f[0][j] = j;

    for(int i = 1;i<=l1;i++)
    {
        for(int j = 1;j<=l2;j++)
        {
            // 判断word1的第i个字符是否与word2的第j个字符相等
            if(s2[j-1] == s1[i-1])
            {
                 f[i][j] = 1+min(f[i-1][j], f[i][j-1]);
                 //由于字符相同,所以距离不发生变化
                 f[i][j] = min(f[i][j], f[i-1][j-1]);

            }

       
             else
        {
          f[i][j] = 1 + min(f[i-1][j], f[i][j-1]);
          //由于字符不相同,所以距离+1
          f[i][j] = min(f[i][j], 1+f[i-1][j-1]);
        }

        }
        
    }
    return f[l1][l2];


}

int main() {
   string s1,s2;
   while(cin>>s1>>s2)
   cout<<Min(s1,s2)<<endl;
   return 0;
}
// 64 位输出请用 printf("%lld")

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

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

相关文章

纺织进入“寒冬”,纺织企业利用APS生产排产加强生产管

进入11月&#xff0c;对于纺服产业链而言&#xff0c;大体“金九银十”的旺季订单已经结束。实际上&#xff0c;经历了前三季度的疲弱表现&#xff0c;市场整体已经对四季度缺乏信心。的确从整个下游行业来看&#xff0c;纺织出口形势依然严峻&#xff0c;预计11月份纺织行业也…

图像增强之灰度变换

前言 图像增强是图像处理常用最常用的方法&#xff0c; 目录前言引言为什么进行空间域增强什么是图像增强如何进行图像增强空间域增强灰度变换线性变换简单的黑白转换灰度拉伸分段线性变换非线性变换对数变换幂次变换直方图均衡引言 为什么进行空间域增强 什么是图像增强 按…

天宇优配|多家房企发布再融资预案,最牛地产股九连板

多家上市房企抢先发布再融资预案&#xff1b;氢能工业车辆产线有新进展&#xff0c;燃料电池本钱或有下降空间。 房地产板块掀涨停潮 12月5日&#xff0c;房地产板块再度走高&#xff0c;掀起涨停潮&#xff0c;阳光股份、招商积余、沙河股份、粤宏远A等涨停&#xff1b;所属地…

uView教程-骨架屏搭建 #低代码 #小程序 #uView

当小程序没有加载完时会出现一个基础的骨架效果&#xff0c; 页面加载完之后骨架会消失掉&#xff0c; 这个效果怎么做的呢&#xff1f; 今天由我来带领大家学习如何使用骨架屏&#xff0c; 在guiplan低代码开发工具中&#xff0c; 选中要添加骨架的元素&#xff0c; 比如…

Lecture1:从图像分类引出概念

目录 1.我们如何处理图像分配这个任务 2.图像分类远古方法----利用曼哈顿距离&#xff1a;L1距离 3.图像分类远古方法----利用欧几里得距离&#xff1a;L2距离 4.超参数 1.我们如何处理图像分配这个任务 我们要给计算机一张图片&#xff0c;让它识别出这是一只猫&#xff1…

【区块链 | 预言机】从零开始使用Chainlink预言机(2)- 智能合约中使用更安全的随机数-代码实战

智能合约中使用更安全的随机数(代码实战篇) Chainlink最近推出一款革命性的产品,VRF—Verifiable Random Function可验证随机数,给智能合约带来了真正安全的随机数。本文我们就来介绍一下如何在智能合约中使用VRF吧。 我们先简要介绍一下Chainlink VFR的工作流程。 首先,…

科普:什么是ChatGPT?(文末有彩蛋)

科普&#xff1a;什么是ChatGPT&#xff1f;(文末有彩蛋) ChatGPT介绍 ChatGPT是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体&#xff0c;GPT-3经过训练&#xff0c;可以在对话中生成类似人类的文本响应。ChatGPT 旨在用作聊天机器人&#xff0c;我们可以对其进…

STM32F103定时计算方法

//TIM2时钟配置 void TIM2_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //定时器TIM2初始化 TIM_TimeBaseStructure.TIM_Period 499; //装载值(4991)500us TIM_TimeBaseStructure.TIM_Prescaler 63; //预分频&am…

WuThreat ITDR 可以快速构建多场景的身份认证与威胁检测能力

什么是WuThreat身份安全云&#xff1f; WuThreat 身份安全云融入身份认证和身份威胁检测与响应&#xff08;ITDR&#xff09;的技术&#xff0c;快速为企业的Web、APP等业务构建一体化多身份场景的认证与安全解决方案。WuThreat在身份认证与威胁检测领域是全球的创新领导者&am…

servletContext 对象的解释

大家好&#xff0c;今天来分享一下servletContext 作用 关于 servletContext 对象&#xff0c; 他代表是整个web 项目&#xff0c;他可以和servlet 或者程序的容器进行通信 同时也可以管理web项目 当一个web项目当中有很多servlet&#xff0c; 那这些servlet之间需要通信 就…

第二证券|六大券商热议“第三支箭”:再融资重启修复市场预期

房地产利好方针接连出台&#xff0c;“第三支箭”为商场再添强心针。上星期&#xff0c;证监会决定在房地产股权融资方面调整优化五项办法。上市房企纷繁呼应&#xff0c;已有近10家房企火速筹划再融资。 时隔多年&#xff0c;监管再度重启房企股权融资&#xff0c;对房地产商场…

Java搭建宝塔部署实战基于RuoYi开源博客管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的RuoYi开源博客管理系统源码&#xff0c;是一个朋友发来给我&#xff0c;让我帮他测试怎么在宝塔搭建部署的&#xff0c;顺便录制出一个视频教程出来&#xff0c;搭建的方法还是比较简…

【基础算法】几种特殊数(素数、公约数、完全数、亲密数) C++实现

●素数 素数又称为质数&#xff0c;它指在一个大于1的自然数中&#xff0c;除了1和它自身外&#xff0c;没法被其他自然数整除的数。比1大&#xff0c;但不是素数的数称为合数。0和1既不是素数&#xff0c;也不是合数。因为素数的分布没有明显的规律&#xff0c;所以在程序中一…

争议不断的AI绘画,如今成为了顶流?

今年以来&#xff0c;AIGC迅速崛起。所谓AIGC&#xff0c;即AI-Generated Content&#xff0c;指的是利用人工智能来生成内容&#xff0c;被认为是继专业产出内容&#xff08;PGC&#xff09;、用户产出内容&#xff08;UGC&#xff09;后的新型内容创作方式。不久前掀起热议的…

「小白学Python」Windows安装Python

前言 Python下载地址 https://www.python.org/ Python下载 打开上面的链接&#xff0c;打开 Python 的下载页面&#xff0c;如下图所示&#xff1a; 我们把鼠标放到 Downloads 上&#xff0c;然后点击 Windows&#xff0c;此时界面如下图所示&#xff1a; 这里&#xff0c;我…

使用python批量的转换图片的格式并保存

使用cv2.dnn实现GoogleNet图像分类 Face-recognition实现人脸识别 Opencv实现信用卡识别 Opencv实现停车位识别 DlibOpencv库实现疲劳检测 Dlib库实现人脸关键点检测&#xff08;Opencv实现&#xff09; OpencvYOLO-V3实现目标跟踪 YOLO-V3实时检测实现&#xff08;open…

str(n)cpy的注意事项以及memset的简单使用

目录 strcpy strncpy memset 前言&#xff1a;因为C语言不能像C的string那样重载、等运算符&#xff0c;所以C语言提供了用于字符串拷贝的函数strcpy与strncpy&#xff0c;但是这两个函数都存在着一些问题&#xff1b; 我们需要先知道&#xff0c;字符串的结束标志是\0&…

五年数据库专家,带你深入高性能 MySQL 架构系统,不要等到面试再追悔莫及

MySQL 作为互联网中非常热门的数据库&#xff0c;在高并发业务场景下&#xff0c;一条好的 MySQL 语句能为企业节省大量的运作时间和成本&#xff0c;这也是为何互联网大厂面试官最爱考察数据库底层和性能调优的原因。因此&#xff0c;了解其底层原理和架构的设计非常重要&…

2022年全球城市变迁研究报告

第一章 全球城市概述 全球城市 (Global City)&#xff0c;又称为世界城市 (World City)、国际大都市或国际都会城市&#xff0c;是指在财富、社会、经济、文化及政治层面直接影响全球事务的城市。近年来&#xff0c;随着全球化的扩张&#xff0c;城市文明与软实力的影响达到鼎…

redis的key过期事件不建议实现延时消息的原因

官网的解释 https://redis.io/docs/manual/keyspace-notifications/#timing-of-expired-events 简单的意思就是不能保证时效性&#xff0c;key过期事件可能会往后推个几分钟才触发&#xff0c;特别是数据量越来越大的时候。 而且一旦客户端处理失败&#xff0c;这个事件也不…