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的主要内容,如果未能解决你的问题,请参考以下文章