1886. Determine Whether Matrix Can Be Obtained By Rotation | Leetcode solution

 1886Determine 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] and target[i][j] are either 0 or 1.

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