https://leetcode.com/problems/smallest-range-i | Easy |
---|
Дан массив целых чисел nums
и целое число k
. Можно прибавить или вычесть любое число от -k
до k
к каждому элементу массива. Нужно найти минимально возможную разницу между максимальным и минимальным значением массива после этих операций.
Input:
nums = [1, 3, 6], k = 3Output:
0Explanation:
Максимум 6, минимум 1 → уменьшаем разницу до 0: [4, 4, 4].
Input:
nums = [0, 10], k = 2Output:
6Explanation:
Изменим nums на [2, 8]. Результат: max(nums) - min(nums) = 8 - 2 = 6.
Input:
nums = [1,3,6], k = 3Output:
0Explanation:
Изменим 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), так как не используется дополнительная память.