0%

766. Toeplitz Matrix

O(mn) time O(1) space
逐行扫描,每一行前n-1个应该和下一行后n-1个一样

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int m = size(matrix), n = size(matrix[0]);
for (int r = 1; r < m; ++r) {
for (int c = 1; c < n; ++c) {
if (matrix[r][c] != matrix[r - 1][c - 1]) return false;
}
}
return true;
}
};

朴素解法,检查每个对角线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int m = size(matrix), n = size(matrix[0]);
for (int i = 1 - n; i <= m - 1; ++i) {
bool set1st = false;
int x = 0;
for (int r = max(0, i); r <= min(m - 1, i + n - 1); ++r) {
if (!set1st) {
x = matrix[r][r - i];
set1st = true;
}
if (x != matrix[r][r - i]) return false;
}
}
return true;
}
};