news 2026/4/16 14:13:20

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/4/16 0:24:30

Mandiant 发布彩虹表工具集,可破解 NTLMv1 管理员密码

谷歌旗下 Mandiant 公司近日公开了一套完整的 Net-NTLMv1 彩虹表数据集&#xff0c;这一举措显著放大了传统认证协议的安全风险警示。过时协议的安全危机此次发布传递了一个紧迫信号&#xff1a;企业必须立即弃用 Net-NTLMv1 协议。该协议自 1999 年起就被证实存在加密缺陷&…

作者头像 李华
网站建设 2026/4/12 21:03:47

(新界面)NVR运动检测配置指导

(新界面)宇视 NVR运动检测功能配置指导一、功能介绍检测一段时间内某个区域是否存在物体运动&#xff0c;检测到运动物体时&#xff0c;上报运动检测报警。检测报警可在通道报警&#xff0c;日志查询中查看。旧版本NVR需升级至NVR-BXXXX.50.13.250529或更高版本&#xff0c;方可…

作者头像 李华
网站建设 2026/4/16 13:41:39

2026 年寒假写论文 AI 选型指南

2026 年寒假写论文 AI 选型指南7 类工具&#xff0c;按“写作阶段”选&#xff0c;不再瞎试寒假是论文推进的关键窗口期&#xff0c;但很多人效率低下&#xff0c;并不是不努力&#xff0c;而是工具选型从一开始就错位。到 2026 年&#xff0c;写论文用 AI 已经不是“能不能写”…

作者头像 李华
网站建设 2026/4/16 13:35:34

全网最全2026本科生AI论文工具TOP9测评

全网最全2026本科生AI论文工具TOP9测评 2026年本科生AI论文工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文辅助软件&#xff0c;…

作者头像 李华
网站建设 2026/4/16 13:45:56

全面讲解常见虚拟串口工具的初始化配置

虚拟串口实战指南&#xff1a;从配置到应用&#xff0c;打通嵌入式通信的“任督二脉”你有没有遇到过这样的场景&#xff1f;手头一个嵌入式设备等着调试&#xff0c;上位机软件只认COM3&#xff0c;可你的笔记本连个DB9接口都没有&#xff1b;或者两个本地程序非要通过串口通信…

作者头像 李华
网站建设 2026/4/12 3:18:39

Obsidian中Template的使用

前言 Obsidian 有两个主要的模板相关插件&#xff1a;官方核心插件 Templates和社区增强插件 Templater。Templater 是官方 Templates 的功能扩展版&#xff0c;可完全替代官方插件&#xff0c;提供更强大的动态模板能力。 建议使用社区版本&#xff0c;功能更多。 功能&#x…

作者头像 李华