class Solution {
public:
bool checkValidGrid(vector<vector<int>>& grid) {
//思路:
//1.首先把每一步的下标记录下来,按顺序一维化展开
//2.判断这个下标能否由上一步下标变换而来
int n=grid.size();
if(grid[0][0]!=0) return false;
//定义一个n*n大小的vector容器存放
vector<pair<int,int>>s(n*n,{0,0});
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
s[grid[i][j]]={i,j};
}
}
for(int i=0;i<n*n-1;i++){
int dx=s[i+1].first-s[i].first;
int dy=s[i+1].second-s[i].second;
//如果满足移动的条件
if((dx*dx+dy*dy)!=5) //如果移动的直角边平方和!=5 则说明不是按照题目要求走的
return false;
}
return true;
}
};
leetcode 2596.检查骑士巡视方案
最新推荐文章于 2024-06-15 09:23:13 发布