598. 范围求和 II

给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。

操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。

在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。

示例 1:输入:
m = 3, n = 3
operations = [[2,2],[3,3]]
输出: 4
解释:
初始状态, M =
[[0, 0, 0],[0, 0, 0],[0, 0, 0]]执行完操作 [2,2] 后, M =
[[1, 1, 0],[1, 1, 0],[0, 0, 0]]执行完操作 [3,3] 后, M =
[[2, 2, 1],[2, 2, 1],[1, 1, 1]]M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。

注意:

  • m 和 n 的范围是 [1,40000]。
  • a 的范围是 [1,m],b 的范围是 [1,n]。
  • 操作数目不超过 10000。

解题思路

因为每个操作是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。

因此,对于每个操作我们可以看成是在原矩阵M的基础上覆盖一层矩阵,并且所有覆盖矩阵都是从原矩阵的左上角开始覆盖的,而矩阵中含有最大整数的元素个数,可以看成是矩阵M被覆盖次数最多的那个部分,因此,我们只需要取出每个操作中最小的正整数a和b,就是被覆盖次数最多的那个部分,他们的面积就算最大整数的元素个数。

代码

class Solution {public:int maxCount(int m, int n, vector<vector<int>>& ops) {if (ops.size()==0) return m*n;int l(0x7fffffff),r(0x7fffffff);for (auto  op:ops){l=min(op[0],l);r=min(op[1],r);}return l*r;}
};

复杂度分析

  • 时间复杂度:O(k),其中 k 是数组 ops\textit{ops}ops 的长度。
  • 空间复杂度:O(1)。

598. 范围求和 II相关推荐

  1. leetcode 598. Range Addition II | 598. 范围求和 II

    题目 https://leetcode-cn.com/problems/range-addition-ii/ 题解 经过观察发现,最大元素会是两个操作对应矩阵的交集区域. class Solution ...

  2. 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列

    今天是坚持每日一题打卡的第十二天 题目链接:https://leetcode-cn.com/problems/range-addition-ii/ 题解汇总:https://zhanglong.blo ...

  3. LeetCode 598. 范围求和 II

    https://leetcode-cn.com/problems/range-addition-ii 题目大意 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. ...

  4. ​LeetCode-每日一题 598. 范围求和 II [Java实现] [极速] [极简]​

    给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < ...

  5. Lintcode 167. 链表求和 221. 链表求和 II 题解

    167. 链表求和 描述 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给 ...

  6. 598. Range Addition II(Python)

    思路:初始化是m*n为0的列表,经过几次变换,得到最终的列表,求最大的几个,换个思路就是可以看成m*n矩阵,每次从左上角开始按照ops列表数进行相应个数加1,最终得到的矩阵最大的几个,也就是几乎每次都 ...

  7. LintCode 207. 区间求和 II(线段树)

    1. 题目 在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value): 对于 query(start, end), 返回数组中下 ...

  8. C#LeetCode刷题之#598-范围求和 II​​​​​​​(Range Addition II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...

  9. leetcode:范围求和 II(用点脑子)

    无脑模拟: 超出内存 func maxCount(m int, n int, ops [][]int) int {//m[0][0]一定最大//模拟//初始化if len(ops) == 0 {ret ...

最新文章

  1. 计算机房一般在办公楼建设吗,写字楼大厦机房建设技术方案.doc
  2. VS2010与.NET4系列 20.VS2010的JavaScript智能感知增强
  3. 偏移量详解-源自csna 菜鸟飞人
  4. 浅谈计算机硬件维护 论文,浅谈计算机硬件维护的论文(2)
  5. view 注册服务器,view服务器ip地址
  6. Node js开发中的那些旮旮角角 第一部
  7. Hbase二级索引 Solr 异常 The most likely cause is another Solr server (or another solr core in this server)
  8. Go单元测试从入门到放弃—0.单元测试基础
  9. JAVA入门[1]--安装JDK
  10. 跳出框架iframe的操作语句
  11. unity2018关联不到vs_vs2015与unity2018兼容性问题
  12. PC端微信自动发送机器人
  13. 模拟黑洞图像_CSS filter 模拟黑洞照片效果
  14. 基于51单片机的交通灯(资源链接见末尾)
  15. 微信小程序python解析获取用户手机号_微信小程序如何获取用户绑定手机号
  16. 大陆中文网站流量排名前100
  17. jQuery源码解析(架构与依赖模块)
  18. 二项式分布和多项式分布
  19. Windows 10配置网络代理服务器
  20. 存储器管理中的局部性原理

热门文章

  1. BZOJ3930-莫比乌斯反演+杜教筛
  2. fork创建多个子进程
  3. 函数返回指针类型(strchr函数)
  4. 腾讯3轮面试都问了Android事件分发,论程序员成长的正确姿势
  5. java-transaction事件
  6. 第十二届湖南省赛 (B - 有向无环图 )(拓扑排序+思维)好题
  7. EF ++属性会更新实体
  8. 2.PHP利用PDO连接方式连接mysql数据库
  9. Polling 、Long Polling 和 WebSocket
  10. a article test