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

每日一题8.2 2536

2536. 子矩阵元素加 1

给你一个正整数 n ,表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat ,矩阵中填满了 0 。

另给你一个二维整数数组 query 。针对每个查询 query[i] = [row1i, col1i, row2i, col2i] ,请你执行下述操作:

  • 找出 左上角 为 (row1i, col1i) 且 右下角 为 (row2i, col2i) 的子矩阵,将子矩阵中的 每个元素 加 1 。也就是给所有满足 row1i <= x <= row2i 和 col1i <= y <= col2i 的 mat[x][y] 加 1 。

返回执行完所有操作后得到的矩阵 mat 。

示例 1:

输入:n = 3, queries = [[1,1,2,2],[0,0,1,1]]
输出:[[1,1,0],[1,2,1],[0,1,1]]
解释:上图所展示的分别是:初始矩阵、执行完第一个操作后的矩阵、执行完第二个操作后的矩阵。
- 第一个操作:将左上角为 (1, 1) 且右下角为 (2, 2) 的子矩阵中的每个元素加 1 。 
- 第二个操作:将左上角为 (0, 0) 且右下角为 (1, 1) 的子矩阵中的每个元素加 1 。 

二维差分,听着比一维差分多一维,但实际上做起来还是套用一维的做法,实际操作和中心思想没有太大变化。

我做的时候将所有的单列看作一个一维数组,如果该数组中有部分被包在目标数组中,则将头加一,尾部后一位减一,得出该数组的差分数组,最后将二维数组竖向求前缀和即可。

    public static int[][] rangeAddQueries(int n, int[][] queries) {int[][] nums = new int[n][n];for (int[] query:queries){for (int i=query[1];i<=query[3];i++){nums[query[0]][i]++;}if(query[2]<n-1){for (int i=query[1];i<=query[3];i++){nums[query[2]+1][i]--;}}}for (int i=0;i<n;i++){for (int j=1;j<n;j++){nums[j][i]+=nums[j-1][i];}}return nums;}

http://www.lryc.cn/news/105341.html

相关文章:

  • 适配器模式(Adapter)
  • Spring学习笔记——1
  • leetcode 406. 根据身高重建队列
  • Matlab实现AGNES算法
  • STM32F4_外部SRAM
  • Java的代理模式
  • FilterAttributeOnClassMethod
  • springboot + (mysql/pgsql) + jpa 多数据源(不同类数据源)
  • 【Golang】Golang进阶系列教程--Go 语言 context 都能做什么?
  • 画图干货!14种uml图类型及示例
  • 计算机视觉实验:人脸识别系统设计
  • 振弦采集仪完整链条的岩土工程隧道安全监测
  • NLP实战9:Transformer实战-单词预测
  • 使用Vue.js和Rust构建高性能的物联网应用
  • idea调节文字大小、日志颜色、git改动信息
  • 避免大龄程序员边缘化:如何在技术行业中保持竞争力
  • Jenkins工具系列 —— 启动 Jenkins 服务报错
  • 华为数通HCIA-实验环境ensp简介
  • SK5代理与IP代理:网络安全中的爬虫利器
  • 实战:Prometheus+Grafana监控Linux服务器及Springboot项目
  • [用go实现解释器]笔记1-词法分析
  • 在 spark-sql / spark-shell / hive / beeline 中粘贴 sql、程序脚本时的常见错误
  • 关于视频汇聚融合EasyCVR平台多视频播放协议的概述
  • 三星书画联展:三位艺术家开启国风艺术之旅
  • 在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)
  • 大数据课程E5——Flume的Selector
  • 在线查看浏览器
  • 谷粒商城第七天-商品服务之分类管理下的分类的拖拽功能的实现
  • 解决单节点es索引yellow
  • Java虚拟机在类加载阶段都做了些什么,才使得我们可以运行Java程序