Мне нужен быстрый способ проверить, является ли массив 2d полностью смежным, то есть все значения смежны с другими одинаковыми значениями. Смежные означает четыре основных направления.2d массив, все значения смежны
This would be an adjacent array
[1 1 2]
[1 2 2]
[3 3 3]
This isn't
[1 2 1]
[1 2 2]
[3 3 3]
This is
[1 2 4]
[1 2 2]
[3 3 3]
До сих пор, я попробовал O (M * N) метод, где я пройти через весь массив и проверить, если хотя бы один из соседей имеет то же значение. Я ищу, возможно, более быстрый способ.
EDIT: только что заметил, что мой метод даже не работает правильно. например:
This should fail (not all of the 1s are adjacent)
[1 2 1]
[1 2 1]
[3 3 3]
Так что теперь мне нужен фактический алгоритм для этого.
Я не думаю, что вы можете сделать намного лучше, чем O (ширина * высота) здесь. Как минимум, вам нужно посещать каждую ячейку не менее двух раз. – Kevin
какие размеры мы говорим?Вы хотите применить этот алгоритм для массивов размером 50x50 и выше? –
@TimHallyburton Довольно маленький. Максимум около 10x10 – Distraction