旋转数组(0°-360°)

6.6的LeetCode周赛第一题为旋转数组,与48题有些类似。

顺时针旋转90°

顺时针转90°,可以通过一行来找规律。 在这里插入图片描述 90度旋转后行转为列,第 i 行变为 第 n - 1 - i 列,则mat[i][j] ——> mat[j][n-1-i]

顺时针旋转180°

旋转180°后,第 i 行转到了 第 n - 1 - i 行,同时对应的列也发生了变化,第 j 列转到了 第 n - 1 - j 列。 在这里插入图片描述mat[i][j] ——> mat[n-1-i][n-1-j]

顺时针旋转360°

旋转360°后,第 i 行转到了 第 i 列,同时对应的列也发生了变化,第 j 列转到了 第 n - 1 - j 行。 mat[i][j] ——> mat[n-1-j][i]

题意中旋转若干次,则可能旋转0°、90°、180°、360°,如果有旋转结果能使mat与target一致,则返回true。

代码

class Solution {
public boolean findRotation(int[][] mat, int[][] target) {
int n = mat.length;
boolean a = true;
boolean b = true;
boolean c = true;
boolean d = true;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(mat[j][n - i - 1] != target[i][j]){
a = false;
}
if(mat[n - i - 1][n - j - 1] != target[i][j]){
b = false;
}
if(mat[n - j - 1][i] != target[i][j]){
c = false;
}
if(mat[i][j] != target[i][j]){
d = false;
}
}
}
return a || b || c || d;
}
}
------ 本文结束感谢您的阅读 ------