某些网站字号设置样式,公司网站留言板,seo对网店的作用有哪些,债务优化是什么意思1886. 判断矩阵经轮转后是否一致
给你两个大小为 n x n 的二进制矩阵 mat 和 target 。现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 #xff0c;如果能够使 mat 与 target 一致#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
示例 1#xff1a; 输…1886. 判断矩阵经轮转后是否一致
给你两个大小为 n x n 的二进制矩阵 mat 和 target 。现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 如果能够使 mat 与 target 一致返回 true 否则返回 false 。
示例 1 输入mat [[0,1],[1,0]], target [[1,0],[0,1]] 输出true 解释顺时针轮转 90 度一次可以使 mat 和 target 一致。 示例 2 输入mat [[0,1],[1,1]], target [[1,0],[0,1]] 输出false 解释无法通过轮转矩阵中的元素使 equal 与 target 一致。 示例 3 输入mat [[0,0,0],[0,1,0],[1,1,1]], target [[1,1,1],[0,1,0],[0,0,0]] 输出true 解释顺时针轮转 90 度两次可以使 mat 和 target 一致。
提示
n mat.length target.lengthn mat[i].length target[i].length1 n 10mat[i][j] 和 target[i][j] 不是 0 就是 1
解题思路
因为对于mat矩阵我们最多只能以 90 度顺时针轮转 矩阵 mat 中的元素3次因为第四次就会变为mat的初始状态因此我们只需要模拟mat进行3次 90 度顺时针轮转并且在每次轮转以后判断一次mat矩阵和target矩阵是否相同如果相同就不需要进行后面的轮转了。
注意:因为题目说的是轮转若干次所以不能忽略不轮转的情况我们需要判断初始状态的mat和target是否相同。
代码
class Solution {
public:bool findRotation(vectorvectorint mat, vectorvectorint target) {int n mat.size();vectorvectorint t(n, vectorint(n));if (is_same(target,mat))return true;for (int i 0; i 3; i) {for (int i 0; i n; i) {for (int j 0; j n; j) {t[j][n - 1 - i] mat[i][j];}}if (is_same(target,t))return true;matt;}return false;}bool is_same(vectorvectorint mat, vectorvectorint target) {int n mat.size();for (int i 0; i n; i) {for (int j 0; j n; j) {if (mat[i][j] ! target[i][j])return false;}}return true;}};