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

一、题目

输入:

第一行为记录的版本迭代关系个数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 sysinput = sys.stdin.read().splitlines()# 第一行是版本迭代关系个数NN = 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] += 1else: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.mfbz.cn/a/335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙,m 个锁,每把锁只能由一把特定的钥匙打开,其他钥匙都无法打开。一把钥匙可能可以打开多把锁,钥匙也可以重复使用。 对于任意一把锁来说,打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…

mysql都有哪些锁?

MySQL中的锁机制是确保数据库并发操作正确性和一致性的重要组成部分,根据锁的粒度、用途和特性,可以分为多种类型。以下是MySQL中常见的锁及其详细说明: 一、按锁的粒度划分 行级锁(Row-level Locks) 描述:…

JVM——JNI 的运行机制

引入 在 Java 开发中,我们常常会遇到一些 Java 语言难以直接处理的场景,例如需要调用特定体系架构或操作系统的功能,或者利用汇编语言的 SIMD 指令来优化关键代码性能。这时,Java Native Interface(JNI)就…

Oracle中的[行转列]与[列转行]

目录 一、原始数据 二、行转列的多种实现方式 1.CASE WHEN 2.DECODE 3.PIVOT(Oracle独有) 4.使用LEAD开窗函数 三、列转行的多种实现方式 1.UNPIVOT(Oracle独有) 2.UNION ALL合并结果集 四、行转列练习:CASE WHEN/DECODE/PIVOT/lag/LEAD 1.CASE WHEN 2…

MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战

MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战 前言一、如何实现小鸟图标二、导入Teacher数据库表实战步骤一:在pojo文件下创建Teacher类步骤二:在mapper下创建TeacherMapper接口步骤三:在rescources…

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员

互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员 本文以真实场景还原的互联网大厂Java面试故事,严肃的面试官与搞笑的水货程序员谢飞机的对话形式,涵盖核心Java、JUC、多线程、线程池、SpringBoot、MyBatis、Dubbo、RabbitMQ、xxl-job、…

JWT笔记

目录 1.JWT简介2.JWT作用3.传统Session4.JWT的结构5.JWT的请求流程 6.SpringBoot集成JWT 1.JWT简介 JWT(JSON web token),也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传…

Docker 镜像调试最佳实践

当你已经构建了一个 Docker 镜像,但运行它的容器启动后立即退出(通常是因为服务异常或配置错误),你仍然可以通过以下几种方式进入镜像内部进行调试。 ✅ 最佳实践:如何对一个“启动即退出”的镜像进行命令行调试&#…

TypeScript小技巧使用as const:让类型推断更精准。

文章目录 前言什么是 as const?为什么需要 as const?as const的使用场景1. 保留字面量类型2. 处理元组类型3. 函数调用中的类型匹配 实际应用示例示例 1:配置对象示例 2:枚举替代方案 总结 前言 作为一名前端开发者,在…

LangGraph-agent-天气助手

用于创建agent和多代理工作流 循环(有迭代次数)、可控、持久 安装langgraph包 conda create --name agent python3.12 conda activate agent pip install -U langgraph pip install langchain-openai设置 windows(>结尾) s…

十三种通信接口芯片——《器件手册--通信接口芯片》

目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…

9大开源AI智能体概况

项目GitHub 链接开发组织核心功能应用领域典型应用案例活跃度AutoGPT (176k⭐)链接Significant Gravitas 团队基于 GPT-4 的自主代理,能够自动分解任务并生成多步提示循环执行,支持调用工具(如网络搜索、文件操作等)。自动化办公、…