华为笔试题解析:及格线设定、电灯开关、地铁换乘与算法挑战

需积分: 0 76 下载量 84 浏览量 更新于2024-07-23 4 收藏 225KB DOCX 举报
本文提供了华为校招机试的一些典型题目,包括初级、中级和高级难度的编程问题,以及部分逻辑和数学题。这些题目旨在测试应聘者的编程能力、逻辑思维和问题解决技巧。 初级题:从考试成绩中划出及格线 这道题目要求确定一条及格分数线,使得至少60%的学生能够及格,且分数线必须是10的倍数。如果所有学生的分数都高于60分,那么及格线就是60分。解题思路可以是先对成绩排序,然后从最低分开始向上遍历,计算及格率,直到达到或超过60%。 中级题:亮着电灯的盏数 这是一个典型的约瑟夫问题变体。每个学生按照编号拉灯泡开关,最后亮着的灯泡是那些被拉奇数次的。由于每个灯泡被拉n次(n为其编号的因数个数),所以亮着的灯泡是那些具有奇数个因数的数,即完全平方数。对于1到n的完全平方数,可以计算它们的数量来得出最终答案。 高级题:地铁换乘 这个问题需要设计一个算法,找到在两条地铁线路中从一个站点到另一个站点的最短路径。可以使用图论中的Dijkstra算法或Floyd-Warshall算法来解决。首先建立一个图,包含两个地铁线的所有站点,然后计算任意两点间的最短路径,考虑换乘只计算一次。 8.29去掉最大值、最小值之后剩下的个数 这个任务是处理一个数字列表,去除最大和最小值后返回剩余元素的个数。可以先对列表排序,然后移除第一个(最小值)和最后一个(最大值)元素,计算长度即可。 8.29从5个人中选取2个人作为礼仪 此题要求从5个人中选择身高差最小的两个人,如果差值相同,选择身高较高的两人。可以先对身高列表排序,然后检查相邻的元素,找出差值最小的组合。 8.29验证括号是否匹配 这是一道字符串处理问题,需要检查输入的字符串中括号是否正确配对。可以使用栈数据结构,遇到左括号入栈,遇到右括号检查栈顶元素是否是对应的左括号,如果不是或者栈为空则不匹配,最后如果栈为空则括号匹配。 8.31回文数 回文数是指正读反读都一样的数字。判断一个数是否为回文,可以将该数转换为字符串,然后比较字符串与其反转字符串是否相等。 以上题目覆盖了基础算法、数据结构、逻辑思维等多个方面,是评估应聘者编程能力和逻辑思维的有效工具。在准备华为或其他公司的技术面试时,熟悉这类问题的解题策略和方法是非常有益的。