C++ 中的 Range Addition II
假设我们有一个称为 M 的 m * n 矩阵,且该矩阵已全部初始化为 0,并且我们还有几个更新操作。现在,操作通过二维数组表示,且每个操作都通过具有两个正整数 x 和 y 的数组表示,这意味着所有介于 0 到 a - 1 之间的 i 值以及所有介于 0 到 b - 1 之间的 j 值,M[i][j] 都应加 1。我们在执行所有操作后必须找出矩阵中最大整数的数目。
所以,如果输入为:m = 3,n = 3,operations = [[2,2],[3,3]],那么输出将为 4,
最初的矩阵如下
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
执行 [2,2] 后,我们将得到
1 | 1 | 0 |
1 | 1 | 0 |
0 | 0 | 0 |
执行 [2,2] 后,我们将得到
2 | 2 | 1 |
2 | 2 | 1 |
1 | 1 | 1 |
为了解决这个问题,我们将遵循以下步骤 −
minR := m,minC := n
对于 ops 数组中的 op
minR := minR 和 op[0] 的最小值
minC := minC 和 op[1] 的最小值
返回 minR * minC
示例
让我们看看以下实现,以便获得更深入的了解 −
#include <bits/stdc++.h> using namespace std; class Solution { public: int maxCount(int m, int n, const vector<vector<int>>& ops) { int minR = m; int minC = n; for (const auto& op : ops){ minR = min(minR, op[0]); minC = min(minC, op[1]); } return minR * minC; } }; main(){ Solution ob; vector<vector<int>> v = {{2,2},{3,3}}; cout << (ob.maxCount(3,3,v)); }
输入
3,3,{{2,2},{3,3}}
输出
4
广告