Skip to content

Commit 7b49cb4

Browse files
authored
Create determine-whether-matrix-can-be-obtained-by-rotation.cpp
1 parent bf5e802 commit 7b49cb4

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Time: O(m * n)
2+
// Space: O(1)
3+
4+
class Solution {
5+
public:
6+
bool findRotation(vector<vector<int>>& mat, vector<vector<int>>& target) {
7+
vector<function<bool (int, int)>> checks = {
8+
[&mat, &target](int i, int j) { return mat[i][j] == target[i][j]; },
9+
[&mat, &target](int i, int j) { return mat[i][j] == target[j][size(mat) - 1 - i]; },
10+
[&mat, &target](int i, int j) { return mat[i][j] == target[size(mat) - 1 - i][size(mat[0]) - 1 - j]; },
11+
[&mat, &target](int i, int j) { return mat[i][j] == target[size(mat[0]) - 1 - j][i]; },
12+
};
13+
const auto& traverse = [&mat, &target](const auto& check) {
14+
for (int i = 0; i < size(mat); ++i) {
15+
for (int j = 0; j < size(mat[0]); ++j) {
16+
if (!check(i, j)) {
17+
return false;
18+
}
19+
}
20+
}
21+
return true;
22+
};
23+
for (const auto& check : checks) {
24+
if (traverse(check)) {
25+
return true;
26+
}
27+
}
28+
return false;
29+
}
30+
};

0 commit comments

Comments
 (0)