news 2026/2/25 14:20:48

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/2/19 13:07:17

BGE-Reranker-v2-m3部署指南:高可用方案

BGE-Reranker-v2-m3部署指南&#xff1a;高可用方案 1. 引言 在当前检索增强生成&#xff08;RAG&#xff09;系统中&#xff0c;向量数据库的近似搜索虽然高效&#xff0c;但常因语义鸿沟导致召回结果存在“关键词匹配但语义无关”的噪音问题。为解决这一瓶颈&#xff0c;智…

作者头像 李华
网站建设 2026/2/24 21:53:33

ST7789V多设备共用SPI引脚设计方案

如何让 ST7789V 与其他外设优雅共享 SPI 总线&#xff1f;实战避坑指南你有没有遇到过这样的窘境&#xff1a;MCU 的引脚快被占完了&#xff0c;但项目里还要接显示屏、Flash、传感器……尤其是那块漂亮的ST7789V小彩屏&#xff0c;明明功能强大&#xff0c;却因为“太能吃引脚…

作者头像 李华
网站建设 2026/2/20 5:31:54

AI智能二维码工坊部署优势:比调用云服务快3倍的响应速度

AI智能二维码工坊部署优势&#xff1a;比调用云服务快3倍的响应速度 1. 引言 1.1 业务场景描述 在现代企业级应用中&#xff0c;二维码已广泛应用于支付、身份认证、产品溯源、营销推广等多个领域。传统方案多依赖第三方云服务进行二维码生成与识别&#xff0c;虽然集成简单…

作者头像 李华
网站建设 2026/2/22 3:18:13

避坑指南:Qwen3-Embedding-4B部署常见问题全解析

避坑指南&#xff1a;Qwen3-Embedding-4B部署常见问题全解析 1. 背景与挑战概述 随着大模型在检索、分类、聚类等任务中的广泛应用&#xff0c;高质量的文本嵌入&#xff08;Text Embedding&#xff09;服务已成为构建智能系统的核心组件之一。Qwen3-Embeding-4B作为通义千问…

作者头像 李华
网站建设 2026/2/24 13:12:22

Fun-ASR支持MP3/WAV/FLAC?格式兼容实测

Fun-ASR支持MP3/WAV/FLAC&#xff1f;格式兼容实测 在语音识别技术日益普及的今天&#xff0c;一个高效、稳定且易于部署的本地化 ASR 系统成为开发者和企业用户的刚需。Fun-ASR 作为钉钉与通义实验室联合推出的轻量级语音识别大模型&#xff0c;凭借其出色的中文识别能力、低…

作者头像 李华