1886. Determine Whether Matrix Can Be Obtained By Rotation
Given two n x n
binary matrices mat
and target
, return true
if it is possible to make mat
equal to target
by rotating mat
in 90-degree increments, or false
otherwise.
Example 1:
Input: mat = [[0,1],[1,0]], target = [[1,0],[0,1]] Output: true Explanation: We can rotate mat 90 degrees clockwise to make mat equal target.
Example 2:
Input: mat = [[0,1],[1,1]], target = [[1,0],[0,1]] Output: false Explanation: It is impossible to make mat equal to target by rotating mat.
Example 3:
Input: mat = [[0,0,0],[0,1,0],[1,1,1]], target = [[1,1,1],[0,1,0],[0,0,0]] Output: true Explanation: We can rotate mat 90 degrees clockwise two times to make mat equal target.
Constraints:
n == mat.length == target.length
n == mat[i].length == target[i].length
1 <= n <= 10
mat[i][j]
andtarget[i][j]
are either0
or1
.
solution:
class Solution {
public:
void swap(int& a , int &b)
{
int c ;
c = a;
a = b;
b = c;
}
void transpose (vector<vector<int>>& m)
{
int p = m.size();
for(int i = 0 ; i < p ; i++)
{
for(int j =i+1 ; j < p ; j++)
{
swap(m[i][j] , m[j][i] );
}
}
}
void reverse_matrix(vector<vector<int>>&m )
{
int k = m.size();
for(int i = 0 ; i < k ; i++)
{
for(int j = 0 ; j < k/2 ; j++)
{
swap(m[i][j] , m[i][k-1-j]);
}
}
}
bool findRotation(vector<vector<int>>& mat, vector<vector<int>>& target) {
if(mat == target)
return true;
for(int i = 0 ; i < 3 ; i++)
{
transpose(mat);
reverse_matrix(mat);
if(mat == target)
return true;
}
return false;
}
};
Comments
Post a Comment