美文网首页
LeetCode之Smallest Range II(Kotli

LeetCode之Smallest Range II(Kotli

作者: 糕冷羊 | 来源:发表于2019-11-25 19:53 被阅读0次

问题:



方法:
只有两种情况,一种是同加同减,另一种是半加半减。先将数组进行排序,同加同减的情况,最小差值为A[lastIndex] - A[0];半加半减的情况,最小差值为相加部分队尾、队头和相减部分队尾、队头的最大区间的最小值,遍历数组作为相加部分和相减部分的分隔点,最后即可输出结果。

具体实现:

class SmallestRangeII {
    fun smallestRangeII(A: IntArray, K: Int): Int {
        A.sort()
        var res = A.last() - A.first()
        for (index in 1..A.lastIndex) {
            val min = minOf(A.first() + K, A[index] - K)
            val max = maxOf(A.last() - K, A[index - 1] + K)
            res = minOf(res, max - min)
        }
        return res
    }
}

fun main(args: Array<String>) {
    val A = intArrayOf(0, 10)
    val K = 2
    val smallestRangeII = SmallestRangeII()
    println(smallestRangeII.smallestRangeII(A, K))
}

有问题随时沟通

具体代码实现可以参考Github

相关文章

网友评论

      本文标题:LeetCode之Smallest Range II(Kotli

      本文链接:https://www.haomeiwen.com/subject/utojwctx.html