news 2026/4/3 4:46:44

leetcode 1895. 最大的幻方 中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 1895. 最大的幻方 中等

一个k x k幻方指的是一个k x k填满整数的方格阵,且每一行、每一列以及两条对角线的和全部相等。幻方中的整数不需要互不相同。显然,每个1 x 1的方格都是一个幻方。

给你一个m x n的整数矩阵grid,请你返回矩阵中最大幻方尺寸(即边长k)。

示例 1:

输入:grid = [[7,1,4,5,6],[2,5,1,6,4],[1,5,4,3,2],[1,2,7,3,4]]输出:3解释:最大幻方尺寸为 3 。 每一行,每一列以及两条对角线的和都等于 12 。 - 每一行的和:5+1+6 = 5+4+3 = 2+7+3 = 12 - 每一列的和:5+5+2 = 1+4+7 = 6+3+3 = 12 - 对角线的和:5+4+3 = 6+4+2 = 12

示例 2:

输入:grid = [[5,1,3,1],[9,3,3,1],[1,3,3,8]]输出:2

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • 1 <= grid[i][j] <= 10^6

分析:先求出水平、垂直、主对角线、反对角线的前缀和,再枚举幻方边长,遍历矩阵的每个点作为左上角点时幻方是否满足条件。

int largestMagicSquare(int** grid, int gridSize, int* gridColSize) { int n=gridSize,m=gridColSize[0],ans=1; int sum_hor[n+5][m+5],sum_ver[n+5][m+5],sum_lr[n+5][m+5],sum_rl[n+5][m+5]; for(int i=0;i<=n;++i) for(int j=0;j<=m;++j) sum_hor[i][j]=sum_ver[i][j]=sum_lr[i][j]=sum_rl[i][j]=0; for(int i=0;i<n;++i) for(int j=m-1;j>=0;--j) sum_hor[i][j]=grid[i][j]+sum_hor[i][j+1]; for(int j=0;j<m;++j) for(int i=n-1;i>=0;--i) sum_ver[i][j]=grid[i][j]+sum_ver[i+1][j]; for(int i=n-1;i>=0;--i) for(int j=m-1;j>=0;--j) sum_lr[i][j]=grid[i][j]+sum_lr[i+1][j+1]; for(int i=n-1;i>=0;--i) for(int j=0;j<m;++j) { sum_rl[i][j]=grid[i][j]; if(j)sum_rl[i][j]+=sum_rl[i+1][j-1]; } int maxn=fmin(n,m); for(int l=1;l<maxn;++l) { for(int i=0;i<n-l;++i) { for(int j=0;j<m-l;++j) { int temp=sum_lr[i][j]-sum_lr[i+l+1][j+l+1],f1=0; if(j-1>=0) { if(sum_rl[i][j+l]-sum_rl[i+l+1][j-1]==temp)f1=1; } else if(sum_rl[i][j+l]==temp)f1=1; for(int k=0;k<=l&&f1;++k) { if(sum_hor[i+k][j]-sum_hor[i+k][j+l+1]!=temp)f1=0; if(sum_ver[i][j+k]-sum_ver[i+l+1][j+k]!=temp)f1=0; } if(f1)ans=fmax(ans,l+1); } } } return ans; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 21:07:35

近视防控这些干货你真的要学

你是不是也发现&#xff0c;身边近视的人越来越多&#xff0c;尤其是孩子&#xff1f;很多人觉得近视防控就是“少看手机、多户外”&#xff0c;但其实这里面藏着很多你不知道的干货。今天就跟你好好聊聊&#xff0c;这些能真正帮到你的近视防控技巧&#xff0c;都是经过验证的…

作者头像 李华
网站建设 2026/3/31 19:23:14

管家婆财贸软件单据草稿过账时如何修改单据日期为登录日期

快消品、冻品等行业经常要提前打单备货&#xff0c;很多客户会提前下单第二天再送的。有些用户会提前一天录好单据保存为草稿单据&#xff0c;配货送货时正式过账单据修改单据日期为当天的日期。今天来和小编一起学习下管家婆财贸软件如何设置单据草稿过账时修改单据日期为登录…

作者头像 李华
网站建设 2026/3/13 6:25:11

创新排水监测管理机制,助力城区污水处理提质增效

一、污水处理提质增效为贯彻城镇污水处理提质增效行动方案&#xff0c;污水收集处理及资源化利用是关键&#xff0c;对整合水资源、水环境和水生态治理&#xff0c;打赢污染防治战具有重要意义。此举不仅改善城镇人居环境&#xff0c;也推动城市治理体系和能力现代化。二、创新…

作者头像 李华
网站建设 2026/3/13 9:58:44

LangChain 第四课:拒绝“纸上谈兵”,给大模型装上“双手”

在之前的学习中&#xff0c;我们眼中的大模型&#xff08;LLM&#xff09;更像是一个博学但封闭的“大脑”。它能陪你聊天、写诗、解释复杂的概念&#xff0c;但它有一个致命的弱点&#xff1a;它无法触及外部世界。 它不知道此时此刻北京的天气&#xff08;因为它只有历史数据…

作者头像 李华
网站建设 2026/4/2 13:21:14

【单片机毕业设计】【dz-1154】基于STM32单片机的智能水杯垫

一、功能简介项目名&#xff1a;基于STM32单片机的智能水杯垫 项目编号&#xff1a;dz-1154 单片机类型&#xff1a;STM32F103C8T6 具体功能&#xff1a; 1、通过DHT11检测当前环境的温湿度&#xff0c;根据环境温湿度自动调节间隔喝水时间&#xff0c;时间到达进行声光报警3声…

作者头像 李华