LeetCode#766 Toeplitz Matrix

1、递推每条对角线,从上至下isTm+ptr为列坐标总从0开始,行坐标ptr同;从左至右ptr行坐标,isTn+ptr列坐标。
2、注意1*n n*1也是。。。

class Solution {
public:
    bool isToeplitzMatrix(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();

        int isTm = 0, isTn = 0;
        if(m == 1)
            isTm = 1;
        if(n == 1)
            isTn = 1;
        if(isTm | isTn)
            return true;

        while(isTm < m-1){
            int ptr = 0;
            while(ptr < n-1 && isTm+ptr < m-1){
                if(matrix[isTm+ptr][ptr] != matrix[isTm+ptr+1][ptr+1]){
                    return false;
                }
                ptr++;
            }
            isTm++;
        }
        while(isTn < n-1){
            int ptr = 0;
            while(ptr < m-1 && isTn+ptr < n-1){
                if(matrix[ptr][isTn+ptr] != matrix[ptr+1][isTn+ptr+1]){
                    return false;
                }
                ptr++;   
            }
            isTn++;
        }

        return true;
    }
};

另一种思想是,错位数组

class Solution {
public:
    bool isToeplitzMatrix(vector<vector<int>>& matrix) {
        for(int i = 1; i < matrix.size(); i++){
             vector<int> tmp1(matrix[i-1].begin(), matrix[i-1].end()-1);
             vector<int> tmp2(matrix[i].begin()+1, matrix[i].end());
             if(tmp1 != tmp2)
                 return false;
         }
         return true;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值