华为OD机考注意事项
简介
题目介绍
题目描述-1 - [多数组合并]
参考 笔试题1——多数组合并 基于这个题目进行变化
现在有多组整数数组,需要将他们合并成一个新的数组。合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则直接取出剩余部分的内容放到新的数组中,继续下一行。
输入描述:
- 第一行是每次读取的固定长度, 0 < 长度 < 10;
- 第二行是整数数组的数目,0 < 数目 < 1000
- 第3-n行是需要合并的数组,不同的数组用回车换行分隔,数组内部用逗号分隔
最大不超过100个元素
输出描述:
输出一个新的数组,用逗号分隔
示例1
3 2 2,5,6,7,9,5,7 1,7,4,3,4
输出 :
2,5,6,1,7,4,7,9,5,3,4,7
该题目网上有类似的题目,在Palmer的协助下,得到正确的解决思路
AC 这道题目大概又30min的时间
题目描述-2 - [高矮个子排队]
现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。
我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;每一个“矮”位置的小朋友要比相邻的位置矮或者相等;
要求小朋友们移动的距离和最小,第一个从“高”位开始排,输出最小移动距离即可。
例如,在示范小队{5,3,1,2,3}中,{5, 1, 3, 2, 3}是排序结果。{5, 2, 3, 1, 3} 虽然也满足“高”“矮”“高”“矮”顺序排列,但小朋友们的移动距离大,所以不是最优结果。
移动距离的定义如下所示:
第二位小朋友移到第三位小朋友后面,移动距离为1,若移动到第四位小朋友后面,移动距离为2;
这道题目网上虽然有,但是没有解决方案,只有Java解题过程,无奈只能根据转换为C++的实现过程,在Palmer的协助下AC了这道题目,但是跑测试用例的时候只跑通了95%,并不是100%,由于时间的问题,只能下一个题目,这道题目至少花费有60min的时间
另外还有处理一行多个数据的输入这里需要注意下处理逻辑
题目描述-3 - [连续子区间和] 中等难度
题目描述
给定一个含有N个正整数的数组,求出有多少个连续区间(包括单个正整数),它们的和大于等于x.
网上搜索了下,牛客网的原题连续子区间和 中等难度
Palmer 跑了代码,但是实际跑测试的时候,发现只通过了98%用例,而且出现了崩溃的问题,系统提示数组越界或者递归调用深度太多
这三个题目的代码已经上传到gitee
机试经验
一直想参加下华为的机考看下难度如何,这次终于如愿了,这周末一直在准备华为的机考复习,但是有点不聚焦的感觉,考试前一直在看动态规划的题目,机试开始前一直在看各种注意事项,晚上8点正式开始机试,准备好各种环境
- 时间150min,三道题目,前两道题目100分,最后一道题目200分,150分为通过
- 通过牛客网来机考,进入之前会测试各种环境,包括需要扫描小程序进行监控
- 开始做题目之前会有2道示例题说明如何处理多行的输入与输出
- 第一道题看起来还是比较简单的,网上也有类似的题目,但是有变化,考试前特意找了操大师和Palmer协助,做题之前整个人是蒙的,完全没有状态,都是Palmer一直协助解决的
- 第二道题网上有Java的解决过程,但是没有C++的解决方案,需要Java转C++,但是有点蒙,最终Palmer提供了解决方案,技术上还是可以的
- 第三道题牛客网的原题,提供了解题的过程
- 虽然是机试,但是是在线的,自己并没有更多的思考,反而是依赖与场外的协助进行答题,这样的过程是不太认可的,无奈自己的技术太差了,刷题量还是太好了,需要尽快的刷题 刷题 刷题