Содержит ли массив все числа в промежутке
Не понимаю как решить задачу. Допустим есть двумерный массв из целых чисел
[ [ 7, 4, 3, 2, 6 ], [ 6, 2, 8, 9, 6 ], [ 9, 7, 1, 1, 4 ], ]
Мне нужно определить содержит ли каждый участок 3*3 все числа от 1 до 9
Не пойму как проверять такими участками во всех массивах вместе. И как проверять наличие именно всех чисел в промежутке от 1 до 9
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
А в чем проблема -
двигаетесь в двумерном цикле с окном 3x3
все числа из окна 3 x 3 заносите в Set()
сравниваете множество с эталонным
Решение в лоб:
код:
// двигаемся по матрице 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...}
}
}
Тут куча места для оптимизаций есть, но для понимания пока лучше решать в лоб