2946. 循环移位后的矩阵相似检查
思路:最简单的方法,模拟一遍
class Solution {
public:
bool areSimilar(vector<vector<int>>& mat, int k) {
int n=mat.size(),m=mat[0].size();
auto tmp=mat;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i%2==0){
tmp[i][(j+k)%m]=mat[i][j];
}else{
tmp[i][((j-k)%m+m)%m]=mat[i][j];
}
}
}
bool flag=1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(tmp[i][j]!=mat[i][j]){
flag=0;
break;
}
}
}
return flag;
}
};
在原数组上比较也是ok的
class Solution {
public:
bool areSimilar(vector<vector<int>>& mat, int k) {
int n=mat.size(),m=mat[0].size();
if(k%m==0) return true;
bool flag=1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i%2==0){
if(mat[i][(j+k)%m]!=mat[i][j]){
flag=0;
break;
}
}else{
if(mat[i][((j-k)%m+m)%m]!=mat[i][j]){
flag=0;
break;
}
}
}
if(!flag) break;
}
return flag;
}
};