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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.