class Solution {
public boolean checkValidGrid(int[][] grid) {
int n = grid.length,idx = 0,x = 0,y = 0;
if(grid[0][0] != 0) return false;
while(idx < n * n - 1){ //此处之前判断idx < n * n idx最大就是n*n-1 但是最大时还要判断!!! 所以要小于n*n-1 也就是idx==n*n-2还要判断!!!但是n*n-1就不用了
int dir[][] = {{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
int check = 0;
//向八个个方向延展 经典的DFS搜图
for(int i = 0;i < 8;i++){
int newx = x + dir[i][0],newy = y + dir[i][1];
if(newx < n && newx >= 0 && newy >=0 && newy < n && grid[newx][newy] == idx + 1){
++idx;
x = newx;
y = newy;
check = 1;
break;
}
}
if(check == 0){
return false;
}
}
return true;
}
}
小条件卡了好久