假设我们有一个m * n矩阵,称为M,并用全0进行了初始化,并且我们还进行了几次更新操作。现在,操作由2D数组表示,每个操作由具有两个正整数x和y的数组表示,这意味着对于范围0内的所有值i,M [i] [j]应加1- 1,所有值j都在0到b-1的范围内。我们必须在执行所有运算之后找到矩阵中最大整数的数量。
因此,如果输入像m = 3,n = 3并且操作= [[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