题目描述
给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。
样例
1 2 3 4
5 1 2 3
9 5 1 2
输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
输出:true
解释:
在上述矩阵中, 其对角线为:
"[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。
各条对角线上的所有元素均相同, 因此答案是 True 。
规律 $O(n^2)$
本身这个题是简单的,我想偏了。(不对,我采用了正向做法,但是在代码实现方面比反向做法难)。
本题节日核心在于判断是否和右下相等,我们可以换个角度是否和右下不等 (只需要判断是或者不是)
接下来看代码。
例如:
1 2 3 4 X // 判断范围是 1~3,X,单独的数值满足题意
2 3 4 5
3 4 5 6 // 判断范围是 1~2,Y,单独的数值满足题意
Y
参考文献
C++ 代码
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
for (int i = 0;i < matrix.size() -1 ;i ++){
for (int j = 0;j < matrix[i].size() - 1;j ++){
if(matrix[i][j] != matrix[i+1][j+1]) return false;
}
}
return true;
}
};