终于又开始刷题了
1、题目描述:
给定一个矩阵,求矩阵中有多少个magic squares
2、题目思路:
我是一点思路都么得的,所以是看了给的参考答案想到的:
有几点可以想一想:
(1) 这九宫格里面的每一个数字都不同,就是0-9,所以他们的和就是45
(2)以中间那个数为中点,横竖以及对角线的四个和的和,是60
(3)算一算,就知道中间的那个数是5
(4)所以,我们可以先找到中间的数是不是5,然后再进行判断九宫格是否符合标准,这样比较精简
3、代码
class Solution:
def numMagicSquaresInside(self, grid: List[List[int]]) -> int:
R, C = len(grid), len(grid[0])
def magic_square(a,b,c,d,e,f,g,h,i):
return ((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)
and sorted([a,b,c,d,e,f,g,h,i]) == [1,2,3,4,5,6,7,8,9])
ans = 0
for r in range(1, R-1):
for c in range(1, C-1):
if grid[r][c]==5:
if magic_square(grid[r-1][c-1],grid[r-1][c],grid[r-1][c+1],
grid[r][c-1],grid[r][c],grid[r][c+1],
grid[r+1][c-1],grid[r+1][c],grid[r+1][c+1]):
ans+=1
return ans