华为OD机考:OD统一考试D卷+C卷+A卷+B卷+刷题OJ
真题目录:华为OD机考机试 真题目录( D卷 +C卷 + B卷 + A卷) + 考点说明
在线OJ:点击立即刷题,模拟真实机考环境
华为OD面试真题精选:华为OD面试真题精选
题目描述
一个图像有n个像素点,存储在一个长度为n的数组img里,每个像素点的取值范围[0,255]的正整数。
请你给图像每个像素点值加上一个整数k(可以是负数),得到新图newImg,使得新图newImg的所有像素平均值最接近中位值128。
请输出这个整数k。
输入描述
n个整数,中间用空格分开
输出描述
一个整数k
备注
• 1 <= n <= 100
• 如有多个整数k都满足,输出小的那个k;
• 新图的像素值会自动截取到[0,255]范围。当新像素值<0,其值会更改为0;当新像素值>255,其值会更改为255;
例如newImg=”-1 -2 256″,会自动更改为”0 0 255″
用例
输入 | 129 130 129 130 |
输出 | -2 |
说明 | -1的均值128.5,-2的均值为127.5,输出较小的数-2 |
题目解析
注意边界条件:
- 如有多个整数k都满足,输出小的那个k
- 当新像素值<0,其值会更改为0;当新像素值>255,其值会更改为255
代码思路
这道题目的思路是枚举每一个可能的k值,计算出新图像的每个像素点的值,然后计算新图像的平均值与中位值128的差的绝对值,最后选出差距最小的k值。
具体实现过程如下:
-
读入图像像素点的值,存储在数组img中。
-
对于每一个可能的k值,计算出新图像的每个像素点的值&#x