https://leetcode.com/problems/number-of-equivalent-domino-pairs/description/ Easy

Условие

Дан список костяшек домино, каждая представлена парой чисел (a, b). Пара (a, b) эквивалентна (c, d), если a == c и b == d или a == d и b == c. Посчитай количество эквивалентных пар костяшек.

Примеры

Input: dominoes = [[1,2],[2,1],[3,4],[5,6]] Output: 1

Input: dominoes = [[1,2],[1,2],[1,1],[1,2],[2,2]] Output: 3

Решение

fun numEquivDominoPairs(dominoes: Array<IntArray>): Int {
    val counts = Array(10) { IntArray(10) } // считаем сколько раз встречалась каждая комбинация
    var result = 0

    for ((a, b) in dominoes) {
        val x = minOf(a, b)
        val y = maxOf(a, b)
        result += counts[x][y] // добавляем текущее количество таких доминошек
        counts[x][y]++ // увеличиваем количество для текущей доминошки
    }

    return result
}

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

O(n), где n — количество костяшек домино.

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

O(1), так как используются только массивы фиксированного размера.