LeetCode之Smallest Range I(Kotlin

2019-03-25  本文已影响0人  糕冷羊

问题:
Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i].
After this process, we have some array B.
Return the smallest possible difference between the maximum value of B and the minimum value of B.

Example 1:

Input: A = [1], K = 0
Output: 0
Explanation: B = [1]
Example 2:

Input: A = [0,10], K = 2
Output: 6
Explanation: B = [2,8]
Example 3:

Input: A = [1,3,6], K = 3
Output: 0
Explanation: B = [3,3,3] or B = [4,4,4]
 

Note:

1 <= A.length <= 10000
0 <= A[i] <= 10000
0 <= K <= 10000

方法:
先取出数组的最大值,然后取出数组的最小值,如果最大值和最小值的差比K的2倍还要大则最小差为max-min-2*K,否则为0,因为最小差即为0。

具体实现:

class SmallestRangeI {
    fun smallestRangeI(A: IntArray, K: Int): Int {
        val max = A.max()
        val min = A.min()
        if (max == null || min == null) {
            return 0
        }
        val result = if ((max - min - K * 2) >= 0) (max - min - K * 2) else 0
        return result
    }
}

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

有问题随时沟通

具体代码实现可以参考Github

上一篇下一篇

猜你喜欢

热点阅读