766. 托普利茨矩阵(简单)- LeetCode

题目描述

在这里插入图片描述

自己解法

对于一个 M × N M×N M×N矩阵,遍历前 M − 1 M-1 M1行的前 N − 1 N-1 N1个元素,假设下标为 ( i , j ) (i,j) (i,j),若该元素与下标为 ( i + 1 , j + 1 ) (i+1,j+1) (i+1,j+1)的元素相等,则满足题目条件,若不相等,则不满足。时间复杂度 O ( M × N ) O(M×N) O(M×N),空间复杂度 O ( 1 ) O(1) O(1)

class Solution:
    def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
        isToeplitzMatrix = True
        M,N = len(matrix),len(matrix[0])
        for i in range(M-1):
            for j in range(N-1):
                if matrix[i][j] != matrix[i+1][j+1]:
                    isToeplitzMatrix = False
        return isToeplitzMatrix

在这里插入图片描述

题解区

除了自己解法以外,还有一种解法是检查对角线元素:

class Solution(object):
    def isToeplitzMatrix(self, matrix):
        groups = {}
        for r, row in enumerate(matrix):
            for c, val in enumerate(row):
                if r-c not in groups:
                    groups[r-c] = val
                elif groups[r-c] != val:
                    return False
        return True

与自己解法类似的简易代码是:

class Solution(object):
    def isToeplitzMatrix(self, matrix):
        return all(r == 0 or c == 0 or matrix[r-1][c-1] == val
                   for r, row in enumerate(matrix)
                   for c, val in enumerate(row))

参考:官方解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值