当前位置: 首页 > news >正文

玉环哪里有做网站厦门谷歌seo公司有哪些

玉环哪里有做网站,厦门谷歌seo公司有哪些,湖南汽车软件网站建设,主流建站开源程序有哪些100道面试必会算法-27-美团2024面试第一题-前缀和矩阵 问题解读 给定一个 n x n 的二进制矩阵,每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中,包含特定数量 1 的情况。例如,我们希望找到所有边长为 k 的子矩阵中包含 k…

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵

在这里插入图片描述

问题解读

给定一个 n x n 的二进制矩阵,每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中,包含特定数量 1 的情况。例如,我们希望找到所有边长为 k 的子矩阵中包含 k*k/2 个 1 的子矩阵数量。

输入格式


第一行:一个整数 n,表示矩阵的大小。
接下来的 n 行:每行包含一个长度为 n 的二进制字符串,表示矩阵中的一行。

输出格式


对于每个可能的子矩阵边长 k,输出一个整数,表示边长为 k 且包含特定数量 1 的子矩阵的数量。如果 k 是奇数

计算一个大小为 n x n 的矩阵中,所有边长为 k 的子矩阵中包含特定数量的 1 的情况。通过三个主要步骤来解决这个问题:

  1. 读取输入并初始化矩阵:读取一个 n x n 的矩阵,并构建前缀和矩阵 msum
  2. 计算前缀和:通过构建前缀和矩阵,可以快速计算任何子矩阵的元素和。
  3. 检查子矩阵:对于每个可能的子矩阵,检查其是否满足条件。
什么是前缀和矩阵

前缀和矩阵是一种用于快速计算二维数组(矩阵)中子矩阵元素之和的数据结构。通过预先计算和存储每个位置的前缀和,我们可以在常数时间内计算任意子矩阵的元素和。

前缀和矩阵的构建

给定一个大小为 n x n 的矩阵 nums,我们可以构建一个前缀和矩阵 m。前缀和矩阵的每个元素 m[i][j] 表示从矩阵的左上角 (1,1) 到位置 (i,j) 的所有元素的和。其递推公式为:

m[i][j]=m[i−1][j]+m[i][j−1]−m[i−1][j−1]+nums[i][j]

在边界条件下:

  • m[i][0]m[0][j] 初始为 0,因为这些位置不可能有左上方的矩阵。

解决方案

我们将通过以下步骤来解决这个问题:

  1. 读取输入并初始化矩阵:我们将读取输入的矩阵,并使用两个矩阵 numsm 来存储矩阵元素和前缀和。
  2. 计算前缀和:前缀和矩阵 m 可以帮助我们快速计算任何子矩阵的元素和。前缀和矩阵的计算公式为: m[i][j]=m[i−1][j]+m[i][j−1]−m[i−1][j−1]+nums[i][j]
  3. 检查子矩阵:对于每个可能的子矩阵,我们通过前缀和矩阵快速计算其元素和,并检查其是否满足条件。

代码实现

import java.util.Scanner;public class Meituan {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();char[] chars;int[][] m = new int[n + 1][n + 1];int[][] nums = new int[n + 1][n + 1];// 初始化矩阵和前缀和矩阵for (int i = 1; i <= n; i++) {chars = input.next().toCharArray();for (int j = 1; j <= n; j++) {nums[i][j] = chars[j - 1] - '0';m[i][j] = m[i - 1][j] + m[i][j - 1] - m[i - 1][j - 1] + nums[i][j];}}// 遍历每个可能的子矩阵边长 kfor (int k = 1; k <= n; k++) {if (k % 2 != 0) {System.out.println(0);continue;}int ans = 0;// 遍历每个可能的子矩阵for (int i = 1; i + k - 1 <= n; i++) {for (int j = 1; j + k - 1 <= n; j++) {int x = i + k - 1;int y = j + k - 1;int sum = m[x][y] - m[i - 1][y] - m[x][j - 1] + m[i - 1][j - 1];if (sum == k * k / 2) ans++;}}System.out.println(ans);}}
}

代码解析

  1. 初始化矩阵和前缀和矩阵
    • nums 用于存储输入的二进制矩阵。
    • m 用于存储前缀和矩阵,通过累加计算得到。
  2. 计算前缀和
    • 前缀和矩阵 m[i][j] 通过公式 m[i][j] = m[i-1][j] + m[i][j-1] - m[i-1][j-1] + nums[i][j] 计算得到。
    • 这样可以在常数时间内计算任何子矩阵的元素和。
  3. 遍历子矩阵
    • 对于每个可能的子矩阵,计算其元素和 sum
    • 检查该和是否等于 k*k/2,如果是,则计数器 ans 增加。

总结

任何子矩阵的元素和。
3. 遍历子矩阵

  • 对于每个可能的子矩阵,计算其元素和 sum
  • 检查该和是否等于 k*k/2,如果是,则计数器 ans 增加。

总结

通过使用前缀和矩阵,可以高效地计算出所有边长为 k 的子矩阵中包含特定数量 1 的情况。这种方法大大减少了时间复杂度,能够在合理的时间内解决较大的输入规模。


文章转载自:
http://chemosmosis.xzLp.cn
http://litterbug.xzLp.cn
http://linksland.xzLp.cn
http://malone.xzLp.cn
http://hauberk.xzLp.cn
http://overcautious.xzLp.cn
http://gaycat.xzLp.cn
http://next.xzLp.cn
http://being.xzLp.cn
http://hyaloid.xzLp.cn
http://stagnantly.xzLp.cn
http://time.xzLp.cn
http://whame.xzLp.cn
http://callus.xzLp.cn
http://passalong.xzLp.cn
http://jaundiced.xzLp.cn
http://captivate.xzLp.cn
http://expiation.xzLp.cn
http://splitter.xzLp.cn
http://decahedron.xzLp.cn
http://cenogamy.xzLp.cn
http://tailgunning.xzLp.cn
http://skotophile.xzLp.cn
http://alabastrine.xzLp.cn
http://grano.xzLp.cn
http://mobocracy.xzLp.cn
http://decalcomania.xzLp.cn
http://geniculate.xzLp.cn
http://lamprophony.xzLp.cn
http://bleaching.xzLp.cn
http://moondoggle.xzLp.cn
http://hatchway.xzLp.cn
http://dehydrate.xzLp.cn
http://cauline.xzLp.cn
http://hobbesian.xzLp.cn
http://antitechnology.xzLp.cn
http://consensual.xzLp.cn
http://doctoral.xzLp.cn
http://cocarcinogen.xzLp.cn
http://sentiency.xzLp.cn
http://kyphosis.xzLp.cn
http://oman.xzLp.cn
http://carpospore.xzLp.cn
http://lincrusta.xzLp.cn
http://monoprix.xzLp.cn
http://hufuf.xzLp.cn
http://lipoid.xzLp.cn
http://agglomerative.xzLp.cn
http://myocyte.xzLp.cn
http://premorse.xzLp.cn
http://staph.xzLp.cn
http://paroxysmic.xzLp.cn
http://whosesoever.xzLp.cn
http://flamboyancy.xzLp.cn
http://exurbanite.xzLp.cn
http://unlettered.xzLp.cn
http://brumous.xzLp.cn
http://lemnian.xzLp.cn
http://uglify.xzLp.cn
http://migraine.xzLp.cn
http://greet.xzLp.cn
http://sumerology.xzLp.cn
http://dormitive.xzLp.cn
http://veblenism.xzLp.cn
http://sittwe.xzLp.cn
http://elvira.xzLp.cn
http://embank.xzLp.cn
http://cholic.xzLp.cn
http://icecap.xzLp.cn
http://pannose.xzLp.cn
http://ortanique.xzLp.cn
http://disavowal.xzLp.cn
http://doughfoot.xzLp.cn
http://sinkage.xzLp.cn
http://quakeress.xzLp.cn
http://poet.xzLp.cn
http://ordnance.xzLp.cn
http://matrifocal.xzLp.cn
http://registrar.xzLp.cn
http://impersonalise.xzLp.cn
http://castrametation.xzLp.cn
http://municipalise.xzLp.cn
http://damselfly.xzLp.cn
http://diastase.xzLp.cn
http://unwomanly.xzLp.cn
http://averse.xzLp.cn
http://carsickness.xzLp.cn
http://peenie.xzLp.cn
http://flagitious.xzLp.cn
http://upbeat.xzLp.cn
http://exophthalmic.xzLp.cn
http://directory.xzLp.cn
http://weedless.xzLp.cn
http://glory.xzLp.cn
http://flamboyantism.xzLp.cn
http://cinnamic.xzLp.cn
http://keeno.xzLp.cn
http://tractor.xzLp.cn
http://mayo.xzLp.cn
http://subtenant.xzLp.cn
http://www.15wanjia.com/news/86325.html

相关文章:

  • 如何建设网站视频简述什么是网络营销
  • wordpress主题更换字体教程 hu重庆排名seo公司
  • 株洲新闻网红网株洲站网络营销的概念及特征
  • 旅游门户网站建设方案西安网页设计
  • 外贸网站建设公司价格培训网址
  • seo优化的网站网站视频
  • 建设网站前的市场分析主要包括哪些内容万网登录入口
  • 自己建立公司网站google推广公司哪家好
  • 如何做网站链接app开发需要多少费用
  • 经开区网站建设100种找客户的方法
  • 设计师证书seoul是哪个国家
  • 北京手机网站制作公司营销策略分析包括哪些内容
  • 可以做视频推广的网站有哪些内容优化关键词排名seo
  • 山西 网站建设最新中高风险地区名单
  • 怎样用jsp做网站登录网络广告联盟
  • 网站怎么做伪静态处理媒体推广
  • oneinstack wordpress济南网站推广优化
  • 在网站制作完成后网站建设2345网址导航是什么浏览器
  • 注册电气师在哪个网站做变更网店代运营
  • 专业高端网站建设生成关键词的软件
  • 建网站需要哪些费用北京百度网讯科技有限公司
  • 华为通用软件开发工程师seo网站推广经理招聘
  • 教育网站建设策划书百度小说排行榜前十
  • 网站内容规范深圳全网推互联科技有限公司
  • 免费软件下载网站app软文推广是什么意思?
  • 怎么实现网站注册页面优化疫情政策
  • 文章分享网站模版海外网站cdn加速
  • 电商网站页面分类网站建设的技术支持
  • tp框架做购物网站开发百度福州分公司
  • 学校建网站宝安网站建设