问题链接
766. 托普利茨矩阵
题目理解
可以看到如果一个矩阵的所有辅对角线上的所有数字都相同,那么该矩阵就为托普利兹矩阵
思路
直观上看,我们只需要找到矩阵的每一条辅对角线,然后判断这条对角线上数字是否相等就可以,但是求解对角线以及边界条件不好处理。
仔细观察矩阵我们可以发现只要当前数字与其右下一个数相等就可以,如果矩阵中每一个数都和其右下一个数相等,那么我们就可以证明该矩阵为托普利兹矩阵
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
//对于矩阵中的每一个数 只要保证其于右下一个数能够相等的话
//那么该矩阵就是托普利兹矩阵
//得到行列大小
if(matrix.size() == 0 || matrix.size() == 1)
return true;
int m = matrix.size();
int n = matrix[0].size();
for (int i = 0; i < m-1; ++i)
{
for(int j = 0; j < n-1; ++j)
{
if(matrix[i][j] != matrix[i+1][j+1])
{
return false;
}
}
}
return true;
}
};