[LeetCode] 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] and target[i][j] are either 0 or 1.
判断矩阵经轮转后是否一致。
给你两个大小为 n x n 的二进制矩阵 mat 和 target 。现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 ,如果能够使 mat 与 target 一致,返回 true ;否则,返回 false 。
classSolution { publicbooleanfindRotation(int[][] mat, int[][] target) { // corner case if (helper(target, mat)) { returntrue; }
// normal case int[][] first = rotateOnce(mat); int[][] second = rotateTwice(mat); int[][] third = rotateThird(mat); if (helper(target, first) || helper(target, second) || helper(target, third)) { returntrue; } returnfalse; }
privatebooleanhelper(int[][] matrix1, int[][] matrix2) { for (inti=0; i < matrix1.length; i++) { for (intj=0; j < matrix1[0].length; j++) { if (matrix1[i][j] != matrix2[i][j]) { returnfalse; } } } returntrue; }
// rotate 90 privateint[][] rotateOnce(int[][] mat) { intlen= mat.length; int[][] A = newint[len][len]; for (inti=0; i < mat.length; i++) { for (intj=0; j < mat[0].length; j++) { A[j][len - 1 - i] = mat[i][j]; } } return A; }