- 托普利茨矩阵
leetcode:
https://leetcode-cn.com/problems/toeplitz-matrix/
还是挺简单的一道题目,但是感觉总是不如题解那么巧妙:
题解表示,只需要比较此元素和它左上角的元素是否相等即可,即是利用了相等的传递性。
我的代码:
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int n=matrix.size();
int m=matrix[0].size();
for(int i=0;i<m-1;i++){
int k=1,j=i;
while(j<m&&k<n){
if(matrix[k++][j++]==matrix[0][i])
continue;
else return false;
}
}
for(int i=1;i<n-1;i++){
int k=2,j=i;
while(j<m&&k<n){
if(matrix[k++][j++]==matrix[i][0])
continue;
else return false;
}
}
return true;
}
};
简洁版:
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int m = matrix.size(), n = matrix[0].size();
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (matrix[i][j] != matrix[i - 1][j - 1]) {
return false;
}
}
}
return true;
}
};
对比一下题解的代码的话,确实复杂了一点吧,不过时间复杂度是一样的,所以我输在了空间复杂度(×),空间复杂度应该也是一样的,就是写起来不那么清晰吧。\
智齿痛的非常厉害,这个时候有个女生关心我,我就爱上她/doge。
好了,希望明天又是种树的一天。