Feburary——766.托普利茨矩阵

又是新的一周,加油板砖,加油刷题。

class Solution:
    def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
        if not matrix:
            return True
        if len(matrix)==1:
            return True
        #将行和列的元素都拿到
        row = matrix[0]
        col = [matrix[i][0] for i in range(len(matrix))]
        row_size, col_size = len(matrix),len(matrix[0])
        for i in range(len(row)):
            tmp = row[i]
            x,y =0,i
            while x<row_size and y<col_size:
                if tmp == matrix[x][y]:
                    x+=1
                    y+=1
                else:
                    return False
        
        for i in range(1,len(col)):
            tmp = col[i]
            x,y = i,0
            while x<row_size and y<col_size:
                if tmp == matrix[x][y]:
                    x+=1
                    y+=1
                else:
                    return False

        
        return True



        row = len(matrix)
        col = len(matrix[0])
        for i in range(row):
            for j in range(col):
                if i>0 and j>0 and matrix[i][j]!=matrix[i-1][j-1]:
                    return False
        return True

所谓托普利茨矩阵就是对角线上所有的元素全部相等。

class Solution:
    def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:

        for i in range(len(matrix) - 1):
            print(matrix[i][:-1],matrix[i + 1][1:])
            if matrix[i][:-1] != matrix[i + 1][1:]:
                return False
        return True

不能将一行或者只能加载不完全的的一行,那就用切片方法去做。因为所谓对角线元素全部相等就意味着上一行和下一行就相差一个元素,通过这样的方法就可以判断对角线的元素是不是相等。

总结:切片方法比上述方法更加的高明,代码也更加的简洁,是非常好的一个解决问题的思路。

猜你喜欢

转载自blog.csdn.net/weixin_37724529/article/details/113930592