Проверьте приращение смежных точек в матрице, JavaScript

Я использую CodeFights в течение пары дней (что я очень рекомендую, так как это отличный способ развить свои навыки), и сегодня я столкнулся с проблемой, которую я не мог решить для своей жизни. Я ненавижу отдавать решения, но ничего, что я пробовал, не сработало бы.

Обычно проблема заключалась в следующем: учитывая любую матрицу чисел, такую ​​как

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

в качестве параметра функции верните true, если, начиная с верхнего левого угла, вы можете пройти по всем числам в массиве, увеличиваясь на единицу каждый раз, перемещаясь только в соседние точки. Итак, я начинаю с 1, 2 - рядом, поэтому я могу двигаться туда, 3 - рядом с 2, поэтому я могу двигаться туда, и так далее, и так далее. Если вы не можете пройти через всю матрицу, верните false. Это кажется довольно простым, пока вы не приступите к этому. Вы должны:

- Отслеживайте и сравнивайте количество проверенных элементов с количеством элементов в матрице. - Каким-то образом проверьте каждое соседнее пятно на предмет значения текущего пятна +1, а затем сделайте это текущим пятном. Затем продолжайте проверять, пока у вас не закончатся цифры, в противном случае верните false.

Я пробовал так много разных способов сделать это, используя 3 или 4 уровня вложенности for циклы, и ничего, что я пробовал, не будет работать для всех тестовых случаев. Я, вероятно, никогда не увижу проблему снова, но ради знаний, кто-нибудь может указать мне правильное направление? А именно, просто помогая мне понять, как эффективно сравнивать соседние пробелы в матрице (возможно, чтобы избежать раздачи ответа для будущих CodeFighters)?

Просто для ясности:

Функция будет настроена на передачу в матрице:

function traverse(matrix) {

}

и что-то вроде этого вернет истину:

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

и что-то вроде этого вернет false:

[[ 1, 3, 5, 8]
 [ 2, 4, 9, 7]
 [10,12, 6,11]]

Любая помощь, чтобы понять, где я мог ошибиться в своей казни, очень ценится. (Кстати, я не могу опубликовать именно то, что я пытался, потому что я не верю, что есть способ вернуться к этому на веб-сайте.)

0 ответов

Другие вопросы по тегам