840. 矩阵中的幻方。python三连双等 a==b==c

840. 矩阵中的幻方 - 力扣(Leetcode)icon-default.png?t=M85Bhttps://leetcode.cn/problems/magic-squares-in-grid/description/

根据幻方的定义,暴力就好

首先怎么去判断9宫格里的数字是否是1-9呢?

答:将这9宫格的数字放到列表中,对其排序,看是否等于list(range(1,10))就好。

在暴力的基础上能不能优化呢?

能,

网格的总和是 45,因为网格必须是 1 到 9 不同的数字。
每一列和行加起来必须是 15,乘以 3 则是网格的总和。
对角线的和也必须是 15,题目中说了对角线与列,行的和相同。
将四条穿过中心的线的 12 个值相加(即一行一列两条对角线),这四条线加起来等于 60;而整个网格加起来为 45。则中心等于 (60−45)/3=5(60-45)/3 = 5(60−45)/3=5。

class Solution:
    def numMagicSquaresInside(self, grid):
        row=len(grid)
        col=len(grid[0])
        ans=0
        def judge(a,b,c,d,e,f,g,h,i):
            ls=[a,b,c,d,e,f,g,h,i]
            ls.sort()
            return (ls==list(range(1,10)) and (a+b+c==d+e+f==g+h+i== a+d+g ==b+e+h == c+f+i == a+e+i == c+e+g == 15))
        for i in range(row-2):
            for j in range(col-2):
                if grid[i+1][j+1]!=5:
                    continue
                else:
                    if judge(grid[i][j],grid[i][j+1],grid[i][j+2],
                             grid[i+1][j],grid[i+1][j+1],grid[i+1][j+2],
                             grid[i+2][j],grid[i+2][j+1],grid[i+2][j+2]):
                        ans+=1
        return ans

矩阵中连双等的含义

”5== len(a)== len(b)“等价于”5== len(a) and len(a)==len(b)“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值