华为2025年校招笔试真题手撕教程(一)

news2025/5/25 15:23:51

一、题目

输入:

第一行为记录的版本迭代关系个数N,范围是[1,100000];

第二行到第N+1行:每行包含两个字符串,第一个字符串为当前版本,第二个字符串为前序版本,用空格隔开。字符串包含字符个数为[1,100],没有前序版本的第二个字符串固定为NA。

输出:

所有迭代次数最多的补丁版本号字符串列表,多个版本号以字典序排序排列,用空格隔开。

二、分析

这一题目主要涉及版本迭代关系的处理以及相关统计和排序操作。首先,题目给出了输入的第一行为记录的版本迭代关系个数 N,其范围在 1 到 100000 之间,这意味着我们需要处理的数据量可能较大,因此在算法的效率和性能方面需要加以考虑,以确保程序能够在合理的时间内处理完成。接下来的第二行到第 N+1 行,每行包含两个字符串,第一个字符串代表当前版本,第二个字符串代表前序版本。这里特别指出,没有前序版本的第二个字符串固定为 NA。这提示我们在处理版本迭代关系时,要能够区分出哪些版本是初始版本(即没有前序版本的那些,对应第二个字符串是 NA 的情况),哪些是有明确前序版本的后续版本。

我们的目标是输出所有迭代次数最多的补丁版本号字符串列表,且多个版本号按字典序排序排列,用空格隔开。这涉及到几个关键步骤:

首先,需要构建一个合适的数据结构来记录各个版本的迭代关系以及对应的迭代次数。比如,可以使用哈希表(字典)来存储每个版本的信息。其中,键可以是版本号字符串,而值可以是一个包含前序版本以及迭代次数等信息的结构。通过遍历输入的每一条版本迭代记录,更新哈希表中相应版本的前序版本关系,并对每个版本的迭代次数进行累加统计。对于那些前序版本为 NA 的情况,可以将其视为初始版本,其迭代次数初始为 1(或者根据具体问题中迭代次数定义的起始值来确定)。而对于有前序版本的后续版本,在更新迭代次数时需要考虑其与前序版本之间的关系是否会导致当前版本的迭代次数发生变化,例如是否是基于前序版本进行进一步迭代从而使得自身迭代次数在前序版本基础上有所增加等情况(不过题目中未明确提及迭代次数的计算规则,需要进一步明确题目意图,但按照常规理解可能每个版本迭代记录的出现代表该版本的一次迭代,所以可能每个版本的迭代次数就是它在输入中出现的次数,无论前序版本如何,但需要结合实际问题语境来确定)。然后,在统计完所有版本的迭代次数之后,需要找出迭代次数最多的那些版本。这可以通过遍历哈希表中的所有版本及其对应的迭代次数,记录下出现的最大迭代次数,接着再次遍历哈希表,将迭代次数等于该最大值的所有版本号收集起来。

最后,对收集到的这些版本号按照字典序进行排序。字典序的排序规则是比较字符串中各个字符的 Unicode 编码值进行逐位比较,直到找出不同之处确定先后顺序。在排序完成后,将这些版本号用空格隔开形成输出字符串。在实现过程中,需要注意处理各种边界情况,比如当所有版本的迭代都次数为 1 且只有一个版本时,或者所有版本的迭代次数相同但有多个版本时,如何正确地输出结果。同时,由于输入的版本号字符串长度可能较长(每个包含 1 到 100 个字符),在处理字符串比较和排序等操作时,要确保算法的效率,避免不必要的复杂度增加。此外,对于数据输入和输出的格式也要严格按照题目要求来进行,确保程序的正确性和可用性。

三、代码

以下是一个用 Python 实现的完整代码来解决这个问题。代码主要通过构建一个版本迭代关系的字典来统计每个版本的迭代次数,然后找出迭代次数最多的版本并按字典序排序输出。

def main():
    import sys
    input = sys.stdin.read().splitlines()
    
    # 第一行是版本迭代关系个数N
    N = int(input[0])
    
    # 构建版本迭代次数字典
    version_count = {}
    
    for i in range(1, N+1):
        current_version, previous_version = input[i].strip().split()
        
        # 统计当前版本的迭代次数
        if current_version in version_count:
            version_count[current_version] += 1
        else:
            version_count[current_version] = 1
            
        # 如果前序版本不是NA,且不在版本字典中,则将其加入字典(迭代次数初始化为0)
        if previous_version != "NA" and previous_version not in version_count:
            version_count[previous_version] = 0
    
    # 找出最大迭代次数
    max_count = max(version_count.values())
    
    # 收集所有迭代次数等于最大值的版本
    max_versions = [version for version, count in version_count.items() if count == max_count]
    
    # 按字典序排序
    max_versions.sort()
    
    # 输出结果
    print(' '.join(max_versions))

if __name__ == "__main__":
    main()

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

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

相关文章

第9.2讲、Tiny Decoder(带 Mask)详解与实战

自己搭建一个 Tiny Decoder(带 Mask),参考 Transformer Encoder 的结构,并添加 Masked Multi-Head Self-Attention,它是 Decoder 的核心特征之一。 1. 背景与动机 Transformer 架构已成为自然语言处理(NLP…

基于PCRLB的CMIMO雷达网络多目标跟踪资源调度

针对分布式组网CMIMO雷达多目标跟踪(MTT)场景,博客分析了一种目标-雷达匹配方案与功率联合优化算法。在采用分布式组网融合架构的基础上,推导包含波束和功率分配的后验克拉美罗界(PCRLB)。随后,将该效用函数结合CMIMO雷达系统资源&#xff0c…

AtCoder Beginner Contest 407(ABCDE)

A - Approximation 翻译&#xff1a; 给你一个正整数 A 和一个正奇数 B。 请输出与实数 的差最小的整数。 可以证明&#xff0c;在约束条件下&#xff0c;这样的整数是唯一的。 思路&#xff1a; 令。比较来判断答案。 实现&#xff1a; #include<bits/…

VILT模型阅读笔记

代码地址&#xff1a;VILT Abstract Vision-and-Language Pre-training (VLP) has improved performance on various joint vision-andlanguage downstream tasks. Current approaches to VLP heavily rely on image feature extraction processes, most of which involve re…

掌握 npm 核心操作:从安装到管理依赖的完整指南

图为开发者正在终端操作npm命令&#xff0c;图片来源&#xff1a;Unsplash 作为 Node.js 生态的基石&#xff0c;npm&#xff08;Node Package Manager&#xff09;是每位开发者必须精通的工具。每天有超过 1700 万个项目通过 npm 共享代码&#xff0c;其重要性不言而喻。本文…

OpenCV CUDA模块特征检测与描述------一种基于快速特征点检测和旋转不变的二进制描述符类cv::cuda::ORB

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::ORB 是 OpenCV 库中 CUDA 模块的一部分&#xff0c;它提供了一种基于快速特征点检测和旋转不变的二进制描述符的方法&#xff0c;用于…

Awesome ChatGPT Prompts:释放AI对话潜力的开源利器

项目概览 Awesome ChatGPT Prompts 是由土耳其开发者 Fatih Kadir Akın 发起的开源项目,托管于 GitHub,旨在通过精心设计的提示词模板(Prompts)优化用户与 ChatGPT 的交互体验。项目以 Markdown 和 CSV 格式管理模板,无需复杂编程语言,但需文本处理能力,目前已在 GitH…

PP-YOLOE-SOD学习笔记2

一、解析X-Anylabeling标注后的json格式问题 最近在使用自动标注工具后json格式转化过程中&#xff0c;即标注框的四点坐标转换为两点坐标时&#xff0c;发现json格式的四点顺序是按顺时针方向开始的&#xff0c;那么在转换其实就是删除2、4坐标或者1、3坐标即可。 二、数据集…

算法学习——从零实现循环神经网络

从零实现循环神经网络 一、任务背景二、数据读取与准备1. 词元化2. 构建词表 三、参数初始化与训练1. 参数初始化2. 模型训练 四、预测总结 一、任务背景 对于序列文本来说&#xff0c;如何通过输入的几个词来得到后面的词一直是大家关注的任务之一&#xff0c;即&#xff1a;…

win10使用nginx做简单负载均衡测试

一、首先安装Nginx&#xff1a; 官网链接&#xff1a;https://nginx.org/en/download.html 下载完成后&#xff0c;在本地文件中解压。 解压完成之后&#xff0c;打开conf --> nginx.config 文件 1、在 http 里面加入以下代码 upstream GY{#Nginx是如何实现负载均衡的&a…

2025电工杯数学建模B题思路数模AI提示词工程

我发布的智能体链接&#xff1a;数模AI扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力&#xff0c;扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体&#xff0c;并发布到豆包、飞书等各个平台。https://www.coze.cn/search/n…

【日志软件】hoo wintail 的替代

hoo wintail 的替代 主要问题是日志大了以后会卡有时候日志覆盖后&#xff0c;改变了&#xff0c;更新了&#xff0c;hoo wintail可能无法识别需要重新打开。 有很多类似的日志监控软件可以替代。以下是一些推荐的选项&#xff1a; 免费软件 BareTail 轻量级的实时日志查看…

Ollama-OCR:基于Ollama多模态大模型的端到端文档解析和处理

基本介绍 Ollama-OCR是一个Python的OCR解析库&#xff0c;结合了Ollama的模型能力&#xff0c;可以直接处理 PDF 文件无需额外转换&#xff0c;轻松从扫描版或原生 PDF 文档中提取文本和数据。根据使用的视觉模型和自定义提示词&#xff0c;Ollama-OCR 可支持多种语言&#xf…

OpenCV CUDA 模块中图像过滤------创建一个拉普拉斯(Laplacian)滤波器函数createLaplacianFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::createLaplacianFilter 是 OpenCV CUDA 模块中的一个函数&#xff0c;用于创建一个 拉普拉斯&#xff08;Laplacian&#xff09;滤波器…

图论学习笔记 3

自认为写了很多&#xff0c;后面会出 仙人掌、最小树形图 学习笔记。 多图警告。 众所周知王老师有一句话&#xff1a; ⼀篇⽂章不宜过⻓&#xff0c;不然之后再修改使⽤的时候&#xff0c;在其中找想找的东⻄就有点麻烦了。当然⽂章也不宜过多&#xff0c;不然想要的⽂章也不…

【将WPS设置为默认打开方式】--突然无法用WPS打开文件

1. 点击【开始】——【WPS Office】——【配置工具】&#xff1b; 2. 在出现的弹窗中&#xff0c;点击【高级】&#xff1b; 3. 在“兼容设置”中&#xff0c;将复选框勾上&#xff0c;点击【确定】。

电子人的分水岭-FPGA模电和数电

为什么模电这么难学&#xff1f;一文带你透彻理解模电 ——FPGA是“前期数电&#xff0c;后期模电”的典型代表 在电子工程的世界里&#xff0c;有两门基础课程让无数学生“闻之色变”&#xff1a;数字电路&#xff08;数电&#xff09; 和 模拟电路&#xff08;模电&#xff0…

(6)python爬虫--selenium

文章目录 前言一、初识selenium二、安装selenium2.1 查看chrome版本并禁止chrome自动更新2.1.1 查看chrome版本2.1.2 禁止chrome更新自动更新 2.2 安装对应版本的驱动程序2.3安装selenium包 三、selenium关于浏览器的使用3.1 创建浏览器、设置、打开3.2 打开/关闭网页及浏览器3…

Python之两个爬虫案例实战(澎湃新闻+网易每日简报):附源码+解释

目录 一、案例一&#xff1a;澎湃新闻时政爬取 &#xff08;1&#xff09;数据采集网站 &#xff08;2&#xff09;数据介绍 &#xff08;3&#xff09;数据采集方法 &#xff08;4&#xff09;数据采集过程 二、案例二&#xff1a;网易每日新闻简报爬取 &#xff08;1&#x…

✨ PLSQL卡顿优化

✨ PLSQL卡顿优化 1.&#x1f4c2; 打开首选项2.&#x1f527; Oracle连接配置3.⛔ 关闭更新和新闻 1.&#x1f4c2; 打开首选项 2.&#x1f527; Oracle连接配置 3.⛔ 关闭更新和新闻