【精】领扣LintCode算法问题答案:1859. 最小振幅

    科技2022-08-04  137

    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 { /** * @param A: a list of integer * @return: Return the smallest amplitude */ public int MinimumAmplitude(int[] A) { // write your code here 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; } }

    最后说两句

    非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

    作者水平有限,如果文章内容有不准确的地方,请指正。

    希望小伙伴们都能每天进步一点点。

    声明

    本文由二当家的白帽子博客原创,转载请注明来源,谢谢~

    Processed: 0.019, SQL: 8