https://leetcode.cn/problems/check-knight-tour-configuration/description/
骑士在一张
n x n的棋盘上巡视。在有效的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。给你一个
n x n的整数矩阵grid,由范围[0, n * n - 1]内的不同整数组成,其中grid[row][col]表示单元格(row, col)是骑士访问的第grid[row][col]个单元格。骑士的行动是从下标 0 开始的。如果
grid表示了骑士的有效巡视方案,返回true;否则返回false。注意,骑士行动时可以垂直移动两个格子且水平移动一个格子,或水平移动两个格子且垂直移动一个格子。下图展示了骑士从某个格子出发可能的八种行动路线。
示例 1:
1
2
3 输入:grid = [[0,11,16,5,20],[17,4,19,10,15],[12,1,8,21,6],[3,18,23,14,9],[24,13,2,7,22]]
输出:true
解释:grid 如上图所示,可以证明这是一个有效的巡视方案。示例 2:
1
2
3 输入:grid = [[0,3,6],[5,8,1],[2,7,4]]
输出:false
解释:grid 如上图所示,考虑到骑士第 7 次行动后的位置,第 8 次行动是无效的。提示:
n == grid.length == grid[i].length3 <= n <= 70 <= grid[row][col] < n * ngrid中的所有整数 互不相同
从左上角出发有些坑,并不是所有测试用例都是由左上角出发,而是需要对这种情况做特殊处理。
从当前位置,按照骑士移动的规则去判断下一个点是否在路径上,虽然有些难看,但是确实可以通过。
1 | class Solution { |
当然,官方的解答方法还是比较舒服的。
1 | class Solution { |


