Решение
fun minimumAbsDifference(arr: IntArray): List<List<Int>> {
// Находим минимальный и максимальный элементы массива
var minValue = Int.MAX_VALUE
var maxValue = Int.MIN_VALUE
for (num in arr) {
if (num < minValue) minValue = num
if (num > maxValue) maxValue = num
}
// Создаем булевый массив для хранения присутствующих чисел
val exists = BooleanArray(maxValue - minValue + 1)
for (num in arr) {
exists[num - minValue] = true
}
var minDiff = Int.MAX_VALUE
val result = mutableListOf<List<Int>>()
var prev = -1
// Проходим по булевому массиву, находя минимальную разницу
for (i in exists.indices) {
if (exists[i]) {
if (prev != -1) {
val diff = i - prev
if (diff < minDiff) {
minDiff = diff
result.clear()
}
if (diff == minDiff) {
result.add(listOf(prev + minValue, i + minValue))
}
}
prev = i
}
}
return result
}