leetcode 打卡 2018.03.06 #766 Toepliz Matrix

766  Toepliz Matrix 


A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element.

Now given an M x N matrix, return True if and only if the matrix is Toeplitz.

# leetcode  Toepliz Matrix
#hint: 判断每条对角线上的值是否相等  ——>  
#对角线即 r1 - c1 = r2 - c2 那么,(r1,c1) (r2,c2) 在同一对角线上
#所以 group为  每个矩阵元素的行列号差值,与矩阵元素值组成的 字典 (行列号差值对应矩阵元素值固定)
class Solution:
    def isToeplitzMatrix(self, matrix):
        groups = {}
        for r ,row in enumerate(matrix):  #创建行数据索引 r即行号
            for c ,val in enumerate(row):  #创建每个数的索引 c即列号 val 即值
                if r-c not in groups:
                    groups[r-c] = val  #遍历矩阵 建立groups
                elif groups[r-c] != val: 
                    return False
        return True
    

Solution 2 : compare with top-left neighbor

补充:all()函数 

参考:all() 函数

#solution 2 
# every diagonal from top-left to bottom-right has the same element,
#so we just need to check (r == 0 ,c ==0 ) or( martix(r,c) == matric(r-1,c-1)) 

class Solution:
    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、付费专栏及课程。

余额充值