C ++中的范围加法II

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

最初矩阵就像

000
000
000

执行[2,2]之后,我们将获得

110
110
000

执行[2,2]之后,我们将获得

221
221
111

为了解决这个问题,我们将遵循以下步骤-

  • 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