Medium
Check Knight Tour Configuration — C++
Full explanation · Time O(m * n) · Space O(m * n)
// Time: O(m * n)
// Space: O(m * n)
// hash table, simulation
class Solution {
public:
bool checkValidGrid(vector<vector<int>>& grid) {
if (grid[0][0]) {
return false;
}
vector<pair<int, int>> lookup(size(grid) * size(grid[0]));
for (int i = 0; i < size(grid); ++i) {
for (int j = 0; j < size(grid[0]); ++j) {
lookup[grid[i][j]] = {i, j};
}
}
for (int i = 0; i + 1 < size(lookup); ++i) {
const int dx = abs(lookup[i + 1].first - lookup[i].first);
const int dy = abs(lookup[i + 1].second - lookup[i].second);
if (!(min(dx, dy) == 1 && max(dx, dy) == 2)) {
return false;
}
}
return true;
}
};