news 2026/5/1 5:51:05

leetcode 1895(前缀和+暴力枚举)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 1895(前缀和+暴力枚举)

1895: 最大的幻方

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

显然,每个1 x 1的方格都是一个幻方。

思路:前缀和+暴力枚举

1.暴力检查

  • 因为m, n ≤ 50,所以最大可能的边长kmin(m,n)
  • 从大到小尝试k,找到第一个满足条件的幻方即可返回

2.优化计算

  • 我们可以预处理行前缀和和列前缀和,以便快速计算任意子矩阵的行和与列和
  • 对角线可以通过直接遍历来求和

3.算法步骤

预处理行前缀和与列前缀和,从大到小枚举边长 k
枚举子矩阵的左上角 (r,c),检查该子矩阵是否为幻方

  • 计算第一行的和作为目标值
  • 检查所有行的和是否等于目标值
  • 检查所有列的和是否等于目标值
  • 检查两条对角线的和是否等于目标值

如果找到,直接返回当前 k
如果都没找到,返回 1(因为 1×1 总是幻方)

class Solution { public: int largestMagicSquare(vector<vector<int>>& grid) { int m=grid.size(),n=grid[0].size(); vector<vector<int>> rowPrefix(m+1,vector<int>(n+1,0)); //预处理行前缀和和列前缀和 vector<vector<int>> colPrefix(m+1,vector<int>(n+1,0)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ rowPrefix[i+1][j+1]=rowPrefix[i+1][j]+grid[i][j]; colPrefix[i+1][j+1]=colPrefix[i][j+1]+grid[i][j]; } } auto getRowsum=[&](int r,int c1,int c2){ return rowPrefix[r+1][c2+1]-rowPrefix[r+1][c1]; }; auto getColsum=[&](int c,int r1,int r2){ return colPrefix[r2+1][c+1]-colPrefix[r1][c+1]; }; for(int k=min(m,n);k>1;k--){ //从大到小枚举边长k for(int r=0;r+k<=m;r++){ for(int c=0;c+k<=n;c++){ int target=getRowsum(r,c,c+k-1); bool ok=true; for(int i=r;i<r+k;i++){ if(getRowsum(i,c,c+k-1)!=target){ ok=false; break; } } if(!ok) continue; for(int j=c;j<c+k;j++){ if(getColsum(j,r,r+k-1)!=target){ ok=false; break; } } if(!ok) continue; int diag1=0,diag2=0; for(int d=0;d<k;d++){ diag1+=grid[r+d][c+d]; diag2+=grid[r+d][c+k-1-d]; } if(diag1!=target || diag2!=target) continue; return k; } } } return 1; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:08:35

图解说明uds28服务在Bootloader中的典型应用

UDS28服务如何为Bootloader“静音”总线&#xff1f;一文讲透通信控制实战逻辑你有没有遇到过这样的场景&#xff1a;正在给ECU刷写固件&#xff0c;CAN总线却频繁报错&#xff0c;下载块超时、NACK重传不断……排查半天发现&#xff0c;罪魁祸首竟是目标ECU自己还在发周期性Al…

作者头像 李华
网站建设 2026/5/1 6:06:54

MinerU+MaxKB避坑指南:文档解析到知识库全流程详解

MinerUMaxKB避坑指南&#xff1a;文档解析到知识库全流程详解 1. 背景与目标 在构建企业级知识库系统时&#xff0c;如何高效、准确地将非结构化文档&#xff08;如PDF、扫描件、幻灯片等&#xff09;转化为可检索、可问答的结构化内容&#xff0c;是核心挑战之一。传统OCR工…

作者头像 李华
网站建设 2026/5/1 8:35:56

VibeVoice长音频秘籍:云端GPU稳定输出90分钟不中断

VibeVoice长音频秘籍&#xff1a;云端GPU稳定输出90分钟不中断 你是不是也遇到过这种情况&#xff1a;团队做有声书项目&#xff0c;文本一万多字&#xff0c;本地电脑用TTS工具合成到一半就卡死、崩溃&#xff1f;重启再试&#xff0c;音色还不连贯&#xff0c;前后对不上。更…

作者头像 李华
网站建设 2026/3/14 14:10:48

fft npainting lama能否集成到APP?API封装可能性分析

fft npainting lama能否集成到APP&#xff1f;API封装可能性分析 1. 技术背景与集成需求 随着图像修复技术的快速发展&#xff0c;基于深度学习的图像重绘与修复工具逐渐成为多媒体应用中的关键组件。fft npainting lama&#xff08;以下简称 Lama-Inpainting&#xff09;作为…

作者头像 李华
网站建设 2026/5/1 8:38:18

3个开源大模型对比评测:云端GPU 3小时完成,成本仅百元

3个开源大模型对比评测&#xff1a;云端GPU 3小时完成&#xff0c;成本仅百元 你是否也遇到过这样的困境&#xff1f;技术选型会议要求一周内对比三个大模型效果&#xff0c;但实验室的GPU被项目组排得满满当当&#xff0c;排队要等两周&#xff1b;自己买显卡预算不够&#x…

作者头像 李华
网站建设 2026/5/1 6:45:49

AUTOSAR与Classic Platform开发要点核心总结

深入AUTOSAR Classic Platform&#xff1a;从架构到实战的工程视角你有没有遇到过这样的场景&#xff1f;一个ECU项目里&#xff0c;应用层代码刚写完&#xff0c;突然被告知要换一款MCU——从NXP换到Infineon。传统开发模式下&#xff0c;这意味着几乎全部底层驱动重写、通信协…

作者头像 李华