LeetCode #766. Toeplitz Matrix

题目

766. Toeplitz Matrix


解题方法

采用模拟法,从左下角开始向左上角遍历,再从左上角开始向右上角遍历,在每次遍历中再遍历当前对角线所有元素,如果不相等直接返回False,所有遍历结束后返回True。
时间复杂度:O(m*n)
空间复杂度:O(1)


代码

class Solution:
    def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
        m = len(matrix) - 2
        n = 0
        
        while m > 0:
            curnum = matrix[m][n]
            i, j = m + 1, n + 1
            while i < len(matrix) and j < len(matrix[0]):
                if matrix[i][j] != curnum:
                    return False
                i, j = i + 1, j + 1
            m -= 1
        else:
            m = 0
        
        while n < len(matrix[0]) - 1:
            curnum = matrix[m][n]
            i, j = m + 1, n + 1
            while i < len(matrix) and j < len(matrix[0]):
                if matrix[i][j] != curnum:
                    return False
                i, j = i + 1, j + 1
            n += 1
        
        return True
posted @ 2020-11-20 09:51  老鼠司令  阅读(53)  评论(0)    收藏  举报