908. 最小差值 I

Posted 心脏dance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了908. 最小差值 I相关的知识,希望对你有一定的参考价值。

题目链接:力扣

思路:

1. 当 maxValue - minValue > 2 * k 时,说明在2K的范围内最大值与最小值的差最小能变成 maxValue - minValue - 2 * k

2. 当 maxValue - minValue <= 2 * k 时,说明在2K的范围内最大值与最小值的差最小能变成0

有人可能会问,不考虑别的值吗?为什么只考虑最大值和最小值?

因为最大值与最小值的差能缩小的范围 > 别的值能缩小的范围。也就是说,最大值与最小值的差能缩小到的值,别的值一定可以缩小到(甚至只能更小)

上代码:

class Solution 
    fun smallestRangeI(nums: IntArray, k: Int): Int 
        val maxValue = nums.max() ?: 0
        val minValue = nums.min() ?: 0
        if (maxValue - minValue > 2 * k) 
            return maxValue - minValue - 2 * k
        
        return 0
    

以上是关于908. 最小差值 I的主要内容,如果未能解决你的问题,请参考以下文章