【华为机试真题 Python实现】2022年4、5月高频机试题_华为机考题库2022

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


2022年4、5月高频机试题

最近准备华为OD社招的同学还比较多增加了100多的订阅大多是没有编程经验的同学上来一顿的搜题背题没有去理解题目思考结题思路导致机考时题目稍微一变化就不知道怎么做了不过OD的机试的重复也是真的高下面是最近整理的高频机试题希望对你有帮助。

题目分值
字符串格式化输出100分
按身高和体重排队100分
拼接 URL100分
磁盘容量排序100分
分糖果100分
圆桌队列100分
计算矩形相交面积100分
We Are A Team100分
数字涂色100分
最少交换次数来组合小于k的整数100分
员工工号问题100分
补种未成活胡杨100分
敏感字段加密100分
5键键盘的输出100分
IPv4地址转换成整数100分
水仙花数100分
单词接龙游戏100分
数大雁100分
二叉树按照中序遍历输出100分
太阳能板最大面积100分
考古学家100分
停车位问题100分
幼儿园找出同班的小朋友100分
计算三个矩形相交的面积100分
分苹果
最长方连续方波信号
欢乐的周末
高效的任务规划200分
喊 7 的次数重排200分
解密犯罪时间200分
最长的指定瑕疵度的元音子串200分
面试(最少面试官数200分
九宫格按键输入200分
仿 LISP 运算200分
路灯问题200分
书籍叠放问题200分
导师请吃火锅200分
数据分类200分
树形目录操作200分
奥运会奖牌榜的排名200分
转骰子200分
机器人走迷宫200分
跳格子游戏200分
高效的任务规划200分
圆桌队列200分

机试必须要会的函数

输入输出处理

华为OD社招使用的是ACM 模式刷惯了LeetCode的同学一时可能会不适应ACM模式你的代码需要处理输入input输出print

while 1:
	try: 
	    # 输入
	    a = input().split()
	    # 输出
	    print(int(a[0]) + int(a[1]))
	except:
        break

当输入的是 4 2 3 4 5 ,每行的第一个数字表示后面有效数据的格式时我们可以这样处理 *nums

n, *nums = input().split()
print(n)
print(nums)
> 4
> ['1', '2', '3', '4']

当输入的数据需要批量转换数据类型是我们可以使用 map

n, *nums = list(map(int, input().split()))
print(n)
print(nums)
> 4
> [1, 2, 3, 4]

当输入的逗号分隔的数据时我们可以使用 .split(',') 分隔

当需要接收连续n行的输入时我们可以使用推导式连续接收输入
【华为机试真题 Python实现】机器人走迷宫 问题

# 4
# 1 2 3 4
# 2 3 4 5
# 3 4 5 6
# 4 5 6 7

n = int(input())
nums = [input().split() for i in range(n)]
print(n)
print(nums)

> 4
> [['1', '2', '3', '4'],
>  ['2', '3', '4', '5'],
>  ['3', '4', '5', '6'],
>  ['4', '5', '6', '7']]

当需要输出指定格式可以使用
"".join() 不能拼接字符串如果待处理数据时数值类型需要使用转化类型

nums = [1, 2, 3, 4]
print(",".join(map(str, nums)))
> 1,2,3,4

for 循环

当我们需要遍历一个可迭代对象(字典、列表、集合、字符串等不需要特殊处理下标时推荐使用for循环可以避免访问越界问题

通过下标访问元素

nums = [1, 2, 3, 4]

for i in range(len(nums)):
    print(nums[i], end=" ")
> 1 2 3 4

直接迭代访问元素

nums = [1, 2, 3, 4]
for i in nums:
    print(i, end=" ")
> 1 2 3 4

同时访问下标和元素

nums = [1, 2, 3, 4]
for i, v in enumerate(nums):
    print(i, v, end=" ")
> 0 1 1 2 2 3 3 4 

while 循环

当我们遇到滑动窗口问题需要通过左右边界动态调整窗口大小时推荐使用while

nums = [1, 2, 3, 4]
i = 0
j = 1
while j < len(nums):
    print(nums[i: j])
    j += 1
> [1]
> [1, 2]
> [1, 2, 3]

字符ASSIC码转换

当遇到对字符处理的题是比如 abcz 转为 bcda实际是对assic值加1来处理的

ord('a')
> 97
ord('b')
> 98
chr(97)
> a

进制转换

【华为机试真题 Python实现】数据分类【2022 Q1 Q2 |200分】 问题中出现的 进制转换hex() 整型转16进制数返回字符串

函数名功能
hex10进制转16进制数
int将一个字符串或数字转换为整型
bin10进制转2进制

绝对值计算

abs() 函数返回数字的绝对值

幂运算

pow() 函数方法返回 xy(x 的 y 次方 的值
我也可以使用 x**y 表示x 的 y 次方

最值选取

使用max获取最大值min获取最小值

排序

当我们需要对列表、字典排序时可以使用sorted
当需要按多种条件同时进行排序时如【华为机试真题 Python实现】奖牌榜的排名 问题需要根据金牌数、银牌数、铜牌数、国家名称首字母4个条件同时排序我们可以使用lambda构建排序规则实现

dex_lst = sorted(temp.items(), key=lambda itm: itm[1], reverse=True)
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python