华为OD机试 | 回忆版
【2022年4月6日】
1、求最小绝对值之和
给定一个随机的整数数组(可能存在正整数和负整数)nums, 请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值 并返回这个最小值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
输入描述:
一个通过空格空格分割的有序整数序列字符串,最多1000个整数, 且整数数值范围是[-65535,65535]
输出描述:
两个数和两数之和绝对值
示例一:
输入
-1 -3 7 5 11 15
输出
2
说明: 因为|nums[0]+nums[2]|=|-3+5|=2最小, 所以返回2
2、判断数组的运算是否正确
a11x1 + a12x2 + a13x3 + a14x4 > b1
a21x1 + a22x2 + a23x3 + a24x4 >= b2
a31x1 + a32x2 + a33x3 + a34x4 < b3
a41x1 + a42x2 + a43x3 + a44x4 <= b4
- ai,bi是double类型的;xi是int类型的;判断符有"<", "<=", ">", ">=", "=".
- 需要判断式子是否正确,全部正确返回true;否则返回式子和bi的最大差值
输入
2.3,3,5.6,7,6;11,3,8.6,25,1;0.3,9,5.3,66,7.8;1,3,2,7,5;340,670,80.6;<=,<=,<=
输出
false
3、生成新的最小数
输入一个字符串类型的数据NUM1,可以任意删掉k个数字得到NUM2,求最小的NUM2。
输入
2615371
4
输出
131
说明:要求删掉4个数字,先删掉6、5、7,剩下的是2131,删掉3得211,删掉2得131,131最小,故结果为131.
【我的用例通过率】
第一题:95%(满分100)
第二题:50%(满分100)
第三题:40%(满分200)
[个人感受]
第一题:还算简单的,但可能是某个场景没有考虑到,所以只通过了95%。
第二题:一开始是蒙的,看到这么多个数,有点不做所措。然后冷静下来分析,其实就是对一堆输入进行计算,就是输入的数据有点多而且不好处理罢了。有了思路之后就按着自己的思路写程序了,但是用例通过率只有50%。
第三题:这是200分的题,但个人觉得比第二题还要好理解。考虑到示例的场景,我是先删掉k-1个最小的,剩下的一个考虑到特殊情况,我是每个字符都尝试着删掉一遍,然后比较大小,选出最小的。最后的样例通过率为40%。
最大的感受:考虑测试样例真的很重要,很多时候,就算你有思路了,但是样例想得不够周全也还是达不到高的通过率,这也是我目前的不足之处。