十月份中上旬华为精英OD C++开发 机考题新鲜出炉

1.整数对最小和

【输入描述】

输入两行整形数组array1,array2,每行首个数字为数组大小size(0<size<=100);

0<array1[i]<=1000;

0<array2[i]<=1000,

接下来一行为正整数k;

0<k<=array1.size()*array2.size();

【输出描述】

输出满足要求的的最小和。

【示例】

【输入】

3 1 1 4

3 1 2 3

2

【输出】

4

【解释】

array1[0]和array2[0]是一对,array1[1]与array2[0]是一对

所以1+1+1+1=4

【我的解答思路】

构造一个二维数组存放可能的数组对和,再将每个元素写入数组并排序,取需要的前k个求和即为整数对最小和。

我觉得思路应该是没有什么大问题,但是我只通过了百分之二十左右,不知道是什么细节造成了问题,还请路过的大佬指点。

2.数组二叉树

【题目描述】

二叉树也可以用数组来存储,给定一个数,树的根节点的值存储在下标1,对于存储在下标N的节点,它的左子节点和右子节点分别存储在下标2*N和2*N+1,并且我们用值-1代表一个节点为空。

给定一个数组存储的二叉树,试求从根节点到最小的叶子节点的路径,路径由节点的值组成。

【输入描述】

输入一行为数组的内容,数组的每个元素都是正整数,元素间用空格分隔。注意第一个元素即为根节点的值,及数组的第N个元素对应下标N,下标0在树的表示中没有使用,所以我们省略啦。输入的树最多为7层

【输出描述】

输出从根节点到最小叶子节点的路径上,各个节点的值,由空格分隔,用例保证最小叶子节点只有一个。

【示例】

【输入】

3 5 7 -1 -1 2 4

【输出】

3 7 2

【我的解题思路】

通过字符串string s读入整行数组,定义一个string ss存储过滤空格的树,定义一个string s_sort去除根节点之后存储过滤空格的树,利用快排函数取第一个元素转成整形为最小叶节点,在ss字符串中利用find函数找出下标+1即为最小叶子节点存储的下标,然后依次/2,得出所有下标(即叶子节点到根节点的路径),逆向输出对应下标-1的ss元素(注意空格)。

思路上应该也没有问题。但是因为我一开始考试时网络断了,没法修复,当时心想凉啦,也比较释然啦,我就开始淡定地把题目都抄下来啦。刚抄完第三题最后一个字的时候,网络又自动恢复正常啦,没有非常惊喜,反而恐慌,所以就很匆忙啦。前两道题都是思路完整的,但是具体实现时总有细节问题,关键就是不知道错在哪一步啦,本地VS试用也到期啦,没办法调试,耗了很久均无果,最后被迫提交啦

3.二叉树遍历

【题目描述】

根据给定的二叉树结构描述字符串,输出该二叉树按照中序遍历结果字符串。中序遍历顺序为:左子树,根节点,右子树

【输入描述】

由大小写字母、左右大括号、逗号组成的字符串

1.字母代表一个节点值,左右括号内包含该节点的子节点

2.左右子节点使用逗号分隔,逗号前为空则表示左子节点为空,没有逗号则表示右子节点为空

3.二叉树节点数最大不超过100

注:输入字符串格式是正确的,无需考虑格式错误情况

【输出描述】

输出一个字符串,为二叉树中序遍历各节点值的拼接结果

【示例】

【输入】

a{b{d,e{g,h{ ,i}}},c{f}}

【输出】

dbgehiafc

【我的解题思路】

这道题考试时间内没来得及思考。

总而言之,还是自己水平有限,还得多刷题,还是手太生啦。欢迎牛油们一起交流,一起进步。老阿姨要加油哎。干饭去啦~

#华为OD机考##华为##笔试题目#
全部评论
第一题没看懂是什么意思
点赞 回复
分享
发布于 2022-02-19 15:33

相关推荐

7 28 评论
分享
牛客网
牛客企业服务