1. 程式人生 > 實用技巧 >LeetCode #766. Toeplitz Matrix

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