假设我们有一个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