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,

最初的矩阵如下

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

更新于:2020 年 6 月 11 日

149 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告