598. 范围求和 II
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相关推荐
- leetcode 598. Range Addition II | 598. 范围求和 II
题目 https://leetcode-cn.com/problems/range-addition-ii/ 题解 经过观察发现,最大元素会是两个操作对应矩阵的交集区域. class Solution ...
- 12行代码AC-Leecode 598. 范围求和 II——Leecode每日一题系列
今天是坚持每日一题打卡的第十二天 题目链接:https://leetcode-cn.com/problems/range-addition-ii/ 题解汇总:https://zhanglong.blo ...
- LeetCode 598. 范围求和 II
https://leetcode-cn.com/problems/range-addition-ii 题目大意 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. ...
- LeetCode-每日一题 598. 范围求和 II [Java实现] [极速] [极简]
给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < ...
- Lintcode 167. 链表求和 221. 链表求和 II 题解
167. 链表求和 描述 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给 ...
- 598. Range Addition II(Python)
思路:初始化是m*n为0的列表,经过几次变换,得到最终的列表,求最大的几个,换个思路就是可以看成m*n矩阵,每次从左上角开始按照ops列表数进行相应个数加1,最终得到的矩阵最大的几个,也就是几乎每次都 ...
- LintCode 207. 区间求和 II(线段树)
1. 题目 在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value): 对于 query(start, end), 返回数组中下 ...
- C#LeetCode刷题之#598-范围求和 II(Range Addition II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3881 访问. 给定一个初始元素全部为 0,大小为 m*n 的矩阵 ...
- leetcode:范围求和 II(用点脑子)
无脑模拟: 超出内存 func maxCount(m int, n int, ops [][]int) int {//m[0][0]一定最大//模拟//初始化if len(ops) == 0 {ret ...
最新文章
- 计算机房一般在办公楼建设吗,写字楼大厦机房建设技术方案.doc
- VS2010与.NET4系列 20.VS2010的JavaScript智能感知增强
- 偏移量详解-源自csna 菜鸟飞人
- 浅谈计算机硬件维护 论文,浅谈计算机硬件维护的论文(2)
- view 注册服务器,view服务器ip地址
- Node js开发中的那些旮旮角角 第一部
- Hbase二级索引 Solr 异常 The most likely cause is another Solr server (or another solr core in this server)
- Go单元测试从入门到放弃—0.单元测试基础
- JAVA入门[1]--安装JDK
- 跳出框架iframe的操作语句
- unity2018关联不到vs_vs2015与unity2018兼容性问题
- PC端微信自动发送机器人
- 模拟黑洞图像_CSS filter 模拟黑洞照片效果
- 基于51单片机的交通灯(资源链接见末尾)
- 微信小程序python解析获取用户手机号_微信小程序如何获取用户绑定手机号
- 大陆中文网站流量排名前100
- jQuery源码解析(架构与依赖模块)
- 二项式分布和多项式分布
- Windows 10配置网络代理服务器
- 存储器管理中的局部性原理