1859. 最小振幅
描述
给定一个由N个整数组成的数组A,一次移动,我们可以选择此数组中的任何元素并将其替换为任何值。 数组的振幅是数组A中的最大值和最小值之间的差。 返回通过执行最多三次替换之后数组A的最小振幅
N是一个整数而且范围是: [2, 10000]A数组中的每一个元素都是整数而且范围是: [-50, 50]
样例 1:
输入:
A = [-9, 8, -1]
输出:
0
解释:
可以将 -9 和 8 替换成-1,这样所有元素都等于 -1,所以振幅是0
样例 2:
输入:
A = [14, 10, 5, 1, 0]
输出:
1
解释:
为了实现振幅是1,我们可以将 14,10,5 替换成 1 或者 0
样例 3:
输入:
A = [11, 0, -6, -1, -3, 5]
输出:
3
解释:
可以将11,-6,5都换成-2
原题传送门
文章目录
1859. 最小振幅描述样例 1:样例 2:样例 3:
分析题解最后说两句声明
分析
为了减小振幅,要么是替换最小数,要么是替换最大数。如果,最大数被替换了,那么振幅就是第二大的数减最小数;如果,最小数被替换了,那么振幅就变成了最大数减第二小的数。
题解
public class Solution {
public int MinimumAmplitude(int[] A
) {
if (A
== null
|| A
.length
<= 4) {
return 0;
}
int minAmplitude
= Integer
.MAX_VALUE
;
Arrays
.sort(A
);
for (int i
= 0; i
< A
.length
&& i
<= 3; ++i
) {
int amplitude
= A
[A
.length
- 4 + i
] - A
[i
];
if (amplitude
< minAmplitude
) {
minAmplitude
= amplitude
;
}
}
return minAmplitude
;
}
}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~