766. 托普利茨矩阵
实现思路首先,得到矩阵的行数 m 和列数 n 。
int m = matrix.size();
int n = matrix[0].size();
然后,分上半部分(包括主对角线)和下半部分对矩阵进行判断。
以上半部分(包括主对角线)为例:
for (int i = 0; i < n; i++) { // 主对角线和上半部分
int val = matrix[0][i];
int offset = i; // 偏移量,就是i,为了表示清楚,我单独设置了一个变量
for (int j = 0; j < m; j++) { // 第 j+1 行
if (j + offset >= n) { // 防止越界;意味着该次的对角线判断结束
break;
}
if (val != matrix[j][j + offset]) {
return false;
}
}
}
下半部分的代码类似。
题目中讲了每一条从左上到右下的对角线上的值都相等,所以也需要对矩阵的下半部分进行判断。
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
// m * n
int m = matrix.size();
int n = matrix[0].size();
for (int i = 0; i < n; i++) { // 主对角线和上半部分
int val = matrix[0][i];
int offset = i; // 偏移量,就是i,为了表示清楚,我单独设置了一个变量
for (int j = 0; j < m; j++) { // 第 j+1 行
if (j + offset >= n) {
break;
}
if (val != matrix[j][j + offset]) {
return false;
}
}
}
for (int i = 1; i < m; i++) { // 左半部分,同上
int val = matrix[i][0];
int offset = i;
for (int j = 0; j < n; j++) {
if (j + offset >= m) {
break;
}
if (val != matrix[j + offset][j]) {
return false;
}
}
}
return true;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)