Решение
fun findRestaurant(list1: Array<String>, list2: Array<String>): Array<String> {
val indexMap = mutableMapOf<String, Int>() // Мапа для хранения индексов элементов из list1
val result = mutableListOf<String>()
var minSum = Int.MAX_VALUE // Минимальная сумма индексов
// Сохраняем индексы всех элементов из list1
for (i in list1.indices) {
indexMap[list1[i]] = i
}
// Проверяем элементы из list2
for (j in list2.indices) {
val restaurant = list2[j]
if (restaurant in indexMap) {
val sum = j + indexMap[restaurant]!! // Сумма индексов
when {
sum < minSum -> { // Найдена новая минимальная сумма
minSum = sum
result.clear()
result.add(restaurant)
}
sum == minSum -> { // Сумма равна минимальной, добавляем ресторан
result.add(restaurant)
}
}
}
}
return result.toTypedArray() // Возвращаем результат в виде массива
}