我已经使用CodeFights几天了(我强烈推荐它,因为它是一种很好的方式来巩固你的技能),今天我遇到了一个我无法接受的挑战弄清楚我的生活。我讨厌放弃解决方案,但我尝试的任何东西都不会起作用。
一般来说,挑战是:给定任何数字矩阵,例如
[1,4,5,8]
[2,3,6,7]
作为函数的参数,如果从左上角开始,您可以遍历数组中的所有数字,每次递增1,只移动到相邻的点,则返回true。所以,我从1,2开始是相邻的,所以我可以移动到那里,3与2相邻,所以我可以移动到那里,依此类推。如果您无法通过整个矩阵,则返回false。看起来很简单,直到你了解它。 你必须:
- 跟踪并比较检查的项目数与矩阵中的项目数。 - 以某种方式检查每个相邻点的当前点+1的值,然后将其作为当前点。然后继续检查,直到你的数字用完为止,否则返回false。
我尝试了很多不同的方法,使用3或4级嵌套for
循环,我尝试的任何东西都不适用于所有测试用例。我可能不会再看到这个问题了,但只是出于知识的缘故,有人能指出我正确的方向吗?即只是帮助我理解如何有效地与矩阵中的相邻空间进行比较(以避免为将来的CodeFighters提供答案)?
只是为了澄清:
该功能将通过矩阵设置:
function traverse(matrix) {
}
之类的东西会返回true:
[[ 1, 4, 5, 8]
[ 2, 3, 6, 7]]
之类的东西会返回false:
[[ 1, 3, 5, 8]
[ 2, 4, 9, 7]
[10,12, 6,11]]
我非常感谢任何帮助,以了解我在执行中出错的地方。 (顺便说一下,我无法准确发布我尝试过的内容,因为我不相信有一种方法可以在网站上找回它。)