
大家好,我是哪吒。
五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题。
5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧。B卷新题库正在更新中。
华为机试有三道题,第一道和第二道属于简单题,分值为100分,第三道为困难题,分值为200分,总分400分,150分钟考试时间。
华为的考试平台是牛客网,大家可以提前去牛客网找到华为机考门槛进行练习,主要是熟悉平台操作练习一下怎么处理输入输出哈!后面我也分享了很多牛客网上的华为OD试题。
华为机考的分数是按照测试用例通过的比例来确定的,比如第一题满分100,如果你提交代码后显示测试用例通过率为80%,那么这道题你就只能得80分,所以其实成绩你在考试的时候就心知肚明了!
150分是华为统一的通过分数线。但各部门的要求又不一样,通常非目标院校的分数要求更高些。300+是高分,260+是较为安全的分数。总之分数越高越高,对后续的定级、综面、HR审批都有益处。
一般来说对接你的HR会问你啥时候可以笔试,你觉得准备的ok了就会发你一个机考链接,这个机考链接的有效期为7天,你在这七天时间内找个时间参加考试即可!华为OD机考会影响薪资的,300分以上和300分一下的价格是不一样的,所以我建议大家好好准备争取超过300分,能拿高分就拿高分。
机试没考过的话,会有半年的冷冻期。
为什么我说华为机考并不难,原因很简单,因为这个考试是有题库的!你在进入机考页面的时候网页上会显示正在组卷中,其实就是去题库里找两个简单题一道复杂题。既然这是一场有题库的考试,那我们最重要的当然是获取最全面的题库对吧,这个大家放心我已经帮大家整理好了,未来也会持续更新!
我觉得准备机考前的第一件事是选择一门合适的编程语言,华为机考对编程语言是没有限定的,你可以选择自己最喜欢的编程语言。考虑到大部分华为OD的应聘者都是技术基础较为薄弱甚至非科班的同学,我还是满建议大家使用Java来应付机考还有后面的手撕代码的,当然如果你会JS、Python、C++的话也可以用来考试。
如果基于我提供的题库开始认认真真刷题,不开玩笑的说遇到原题是肯定的,正常情况下遇到两道原题是不难的,很多同学是直接三题全部命中!因为华为题库三个月会更新一部分新题进来,所以大家尽量不要在新题刚刚更新的时候去做,建议在新题发布一个月后再考我感觉命中两道很正常的!
下面,哪吒将华为OD机试真题归归类,让大家一目而了然。
关于订阅华为OD机试真题的后续问题
在考试的时候,最好不要用CSDN专栏里的源码去答题,因为华为OD机试是有查重的,这个一定要注意!最好是改一改变量名称,加一加注释,改一改逻辑顺序,掌握答题思路才是关键,下面的题中我都加了详细的答题思路,代码中也有详细的注释说明,代码运行是100%正确无误的,每一题都有样例测试,全网独一份。
如果你刚刚参加完机试考试,欢迎提供真题到哪吒这里,直接红包转账收题。
很多考过的小伙伴,总结了宝贵的经验,多刷题,先易后难,前期积累自信,后期逐一突破,效果最佳。
下面从最新题开始分享、按时间倒序、按难以程度正序排序,做到刷题的循序渐进。
1、华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路
2、华为OD机试真题 Java 实现【支持优先级的队列】【2023 B卷 100分】
3、华为OD机试真题 Java 实现【IPv4地址转换成整数】【2023 B卷 100分】
4、华为OD机试真题 Java 实现【字符统计】【2023 B卷 100分】
5、华为OD机试真题 Java 实现【食堂供餐】【2023 B卷 考生抽中题】,附详细解题思路
6、华为OD机试真题(Java),跳跃游戏 II(100%通过+复盘思路)
7、华为OD机试真题 Java 实现【拼接URL】【2023 B卷 100分】,附详细解题思路
8、华为OD机试真题 Java 实现【找终点】【2023 B卷 100分】,附详细解题思路
9、华为OD机试真题 Java 实现【猴子爬山】【2023 B卷 100分】,附详细解题思路
10、华为OD机试真题 Java 实现【矩阵最大值】【2023 B卷 100分】,附详细解题思路
🏆更多华为OD真题,查看华为OD机试(JAVA)真题(A卷+B卷)
现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可在网格间移动
问题:求机器人可活动的最大范围对应的网格点数目。
说明:
1)网格左上角坐标为 (0, 0),右下角坐标为 (m-1, n-1)
2)机器人只能在相邻网格间上、下、左、右移动
示例1,输入如下网格
输出:6
说明:图中绿色区域,相邻网格差值绝对值都小于等于1,且为最大区域,对应网格点数目为6
示例 2,输入如下网格:
输出:1
第1行输入为M和N,M表示网格的行数,N表示网格的列数。
之后M行表示网格数值,每行N个数值(数值大小用k表示),数值间用单个空格分隔,行首行尾无多余空格。
M、N、k均为整数,且1<=M,N<=150,0<=k<=50。
输出1行,包含1个数字,表示最大活动区域对应的网格点数目
行末无多余空格
def calculate_max_region(m, n, grid):
# 创建一个二维数组 region 来表示网格
region = []
for i in range(m):
# 将输入的网格数值复制到 region 数组中
region.append(list(grid[i]))
# 初始化最大活动区域对应的网格点数目为 0
max_count = 0
# 遍历网格中的每个网格点,以每个网格点为起点进行深度优先搜索
for i in range(m):
for j in range(n):
if region[i][j] != -1:
# 调用 move 函数进行深度优先搜索,并更新最大活动区域对应的网格点数目
max_count = max(max_count, move(i, j, region[i][j], region))
# 返回最大活动区域对应的网格点数目
return max_count
def move(row, col, num, region):
# 判断当前网格点的坐标是否越界
if row < 0 or col < 0 or row >= len(region) or col >= len(region[0]):
return 0
# 获取当前网格点的数值
current_num = region[row][col]
# 判断当前网格点的数值是否有效
if current_num == -1 or abs(current_num - num) > 1:
return 0
# 将当前网格点的数值设为 -1,表示已经访问过该网格点
region[row][col] = -1
# 初始化网格点数目为 1,表示当前网格点是活动区域的一部分
count = 1
# 分别向上、下、左、右四个方向移动,并将每次递归返回的结果累加到 count 变量中
count += move(row - 1, col, current_num, region) # 上移
count += move(row + 1, col, current_num, region) # 下移
count += move(row, col - 1, current_num, region) # 左移
count += move(row, col + 1, current_num, region) # 右移
# 返回最终的 count 值
return count
2 3
1 3 5
4 1 3
1

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)
🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。
