打卡(5)

  1. 托普利茨矩阵
    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。
好了,希望明天又是种树的一天。

猜你喜欢

转载自blog.csdn.net/weixin_47741017/article/details/114156675
今日推荐