题目描述
给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵
链接:https://leetcode-cn.com/problems/toeplitz-matrix
样例1
样例2
思路
以第一行每个元素为对角线开始遍历。再以第一列每个元素以对角线开始遍历。如果碰到不满足的返回false,否则返回true。
官方题解的思路是:该矩阵的特性为,每个元素应与其左上角元素相同,照这个特性遍历每一个元素即可。
代码
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
int row = matrix.length;
int col = 0;
int i,j;
if(row != 0) {
col = matrix[0].length;
}
//行列各一次
for(i = 0;i < row;i++) {
int nowrow = i;
int nowcol = 0;
int nowval = matrix[i][0];
while(nowrow < row && nowcol < col) {
if (matrix[nowrow][nowcol] == nowval) {
nowrow++;
nowcol++;
}
else
return false;
}
}
for(i = 0;i < col;i++) {
int nowrow = 0;
int nowcol = i;
int nowval = matrix[0][i];
while(nowrow < row && nowcol < col) {
if (matrix[nowrow][nowcol] == nowval) {
nowrow++;
nowcol++;
}
else
return false;
}
}
return true;
}
}
太久没刷题了,而且也不怎么会java,慢慢来吧,有时间的时候就刷点题~