https://leetcode.com/problems/smallest-range-i Easy

Условие

Дан массив целых чисел nums и целое число k. Можно прибавить или вычесть любое число от -k до k к каждому элементу массива. Нужно найти минимально возможную разницу между максимальным и минимальным значением массива после этих операций.

Примеры

Input: nums = [1, 3, 6], k = 3 Output: 0 Explanation: Максимум 6, минимум 1 → уменьшаем разницу до 0: [4, 4, 4].

Input: nums = [0, 10], k = 2 Output: 6 Explanation: Изменим nums на [2, 8]. Результат: max(nums) - min(nums) = 8 - 2 = 6.

Input: nums = [1,3,6], k = 3 Output: 0 Explanation: Изменим nums на [4, 4, 4]. Результат: max(nums) - min(nums) = 4 - 4 = 0.

Решение

fun smallestRangeI(nums: IntArray, k: Int): Int {
    val max = nums.maxOrNull()!!
    val min = nums.minOrNull()!!
    return maxOf(0, (max - min) - 2 * k)
}

Временная сложность

O(N), где N — длина массива nums.

Пространственная сложность

O(1), так как не используется дополнительная память.