Содержит ли массив все числа в промежутке

Не понимаю как решить задачу. Допустим есть двумерный массв из целых чисел

[ [ 7, 4, 3, 2, 6 ], [ 6, 2, 8, 9, 6 ], [ 9, 7, 1, 1, 4 ], ]

Мне нужно определить содержит ли каждый участок 3*3 все числа от 1 до 9

Не пойму как проверять такими участками во всех массивах вместе. И как проверять наличие именно всех чисел в промежутке от 1 до 9


Ответы (1 шт):

Автор решения: Zhihar

А в чем проблема -

  1. двигаетесь в двумерном цикле с окном 3x3

  2. все числа из окна 3 x 3 заносите в Set()

  3. сравниваете множество с эталонным

Решение в лоб:

код:

// двигаемся по матрице m x n
for (i = 0; i < n - 3; i ++) {
    for (j = 0; j < m - 3; j++) {

        digits = new Set();

        // собираем все числа в окне 3 x 3
        for (x = 0; x < 3; x ++) {
            for (y = 0; y < 3; y ++) {
                digits.add(arr[i + x][j + y]);
            }
        }

         // сравниваем множество с {1,2,3...}
    }
}

Тут куча места для оптимизаций есть, но для понимания пока лучше решать в лоб

→ Ссылка