区间加法II-LeetCode
区间加法II
🎯 问题描述(来源于LeetCode)
描述:
给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, M[x][y] 应该加 1。
要求:
在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。
说明:
1 <= m, n <= 4 * 1040 <= ops.length <= 104ops[i].length == 21 <= ai <= m1 <= bi <= n
示例:
-
示例 1:
输入: m = 3, n = 3,ops = [[2,2],[3,3]]
输出: 4
解释: M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。 -
示例 2:
输入: m = 3, n = 3, ops = [[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3],[2,2],[3,3],[3,3],[3,3]]
输出: 4
💻 解题思路
思路1:模拟(暴力破解)
思路1:代码实现
1 | class Solution: |
思路1:📊 性能分析
提交结果
- 运行时间:
- 内存消耗:超出内存限制
复杂度验证
- 时间复杂度:,其中k是操作次数,a和b是每次操作的区域大小
- 空间复杂度:
思考
当m,n很大时,二维数组占用空间过大,超出内存限制
思路2:思考重叠区域
思路2:代码实现
1 | class Solution: |
思路2:📊 性能分析
提交结果
- 运行时间:3ms击败34.41%
- 内存消耗:18.87MB击败54.25%
复杂度验证
- 时间复杂度:
- 空间复杂度:
思考
只需要找到所有相加区域的重叠部分即可
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!










