https://leetcode.com/problems/minimum-index-sum-of-two-lists Easy

Решение

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() // Возвращаем результат в виде массива
}