1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution

In this guide, you will get 1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution with the best time and space complexity. The solution to Determine Whether Matrix Can Be Obtained By Rotation problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Determine Whether Matrix Can Be Obtained By Rotation solution in C++
  4. Determine Whether Matrix Can Be Obtained By Rotation solution in Java
  5. Determine Whether Matrix Can Be Obtained By Rotation solution in Python
  6. Additional Resources
1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution image

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

Complexity Analysis

  • Time Complexity: O(n^2)
  • Space Complexity: O(n^2)

1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution in C++

class Solution {
 public:
  bool findRotation(vector<vector<int>>& mat, vector<vector<int>>& target) {
    for (int i = 0; i < 4; ++i) {
      if (mat == target)
        return true;
      rotate(mat);
    }
    return false;
  }

 private:
  void rotate(vector<vector<int>>& mat) {
    ranges::reverse(mat);
    for (int i = 0; i < mat.size(); ++i)
      for (int j = i + 1; j < mat.size(); ++j)
        swap(mat[i][j], mat[j][i]);
  }
};
/* code provided by PROGIEZ */

1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution in Java

class Solution {
  public boolean findRotation(int[][] mat, int[][] target) {
    for (int i = 0; i < 4; ++i) {
      if (Arrays.deepEquals(mat, target))
        return true;
      rotate(mat);
    }
    return false;
  }

  private void rotate(int[][] mat) {
    for (int i = 0, j = mat.length - 1; i < j; ++i, --j) {
      int[] temp = mat[i];
      mat[i] = mat[j];
      mat[j] = temp;
    }
    for (int i = 0; i < mat.length; ++i)
      for (int j = i + 1; j < mat.length; ++j) {
        final int temp = mat[i][j];
        mat[i][j] = mat[j][i];
        mat[j][i] = temp;
      }
  }
}
// code provided by PROGIEZ

1886. Determine Whether Matrix Can Be Obtained By Rotation LeetCode Solution in Python

class Solution:
  def findRotation(self, mat: list[list[int]], target: list[list[int]]) -> bool:
    for _ in range(4):
      if mat == target:
        return True
      mat = [list(x) for x in zip(*mat[::-1])]
    return False
# code by PROGIEZ

Additional Resources

Happy Coding! Keep following PROGIEZ for more updates and solutions.