范围求和

简介: 范围求和

范围求和(算法题)

题目:给你一个 m x n 的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中 ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, Mx 应该加 1。

在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。

示例1:

img

输入: 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 <= m, n <= 4 * 104
  • 0 <= ops.length <= 104
  • ops[i].length == 2
  • 1 <= ai <= m
  • 1 <= bi <= n

思路

按照题目的要求,对于每一次操作,给定 (a,b),我们会将矩阵中所有满足 0≤i<a以及 0≤j<b的位置 (i,j)全部加上 1。由于 a,b均为正整数,那么 (0,0) 总是满足上述条件,并且最终位置 (0,0) 的值就等于操作的次数。详细可以参考598题。

class Solution {
public:
    int maxCount(int m, int n, vector<vector<int>>& ops) {
        int mina = m, minb = n;
        for (const auto& op: ops) {
            mina = min(mina, op[0]);
            minb = min(minb, op[1]);
        }
        return mina * minb;
    }
};
相关文章
|
2月前
|
Python
累加求和 1~ n求和
累加求和 1~ n求和
48 4
|
4月前
【P1035】级数求和
【P1035】级数求和
|
5月前
|
存储 弹性计算 运维
对100 以内的所有正整数相加求和
【4月更文挑战第29天】
48 2
|
5月前
分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和
分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和
65 0
wustojc3010快速求和
wustojc3010快速求和
54 0
|
机器学习/深度学习 Windows
1228 序列求和 (伯努利数)
1228 序列求和 (伯努利数)
83 0
|
存储 算法 索引
算法 | 100000 个数的求和只需要 O(1),可能吗?
算法 | 100000 个数的求和只需要 O(1),可能吗?
100 0
算法 | 100000 个数的求和只需要 O(1),可能吗?
素数求和
这是刚开始写的代码,有点长。
73 0