สมมติว่าเรามีเมทริกซ์ m * n หนึ่งชื่อเรียกว่า M และสิ่งนี้ถูกเริ่มต้นด้วย 0 ทั้งหมด และเรายังมีการดำเนินการอัปเดตหลายอย่าง ตอนนี้ การดำเนินการถูกแสดงโดยอาร์เรย์ 2 มิติ และการดำเนินการแต่ละครั้งจะแสดงด้วยอาร์เรย์ที่มีจำนวนเต็มบวกสองจำนวน x และ y หมายความว่า ควรเพิ่ม M[i][j] หนึ่งรายการสำหรับค่าทั้งหมด i ในช่วง 0 ถึง a - 1 และค่า j ทั้งหมดในช่วง 0 ถึง b - 1 เราต้องหาการนับจำนวนเต็มสูงสุดในเมทริกซ์หลังจากดำเนินการทั้งหมด
ดังนั้น หากอินพุตเป็น m =3, n =3 และ operation =[[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
-
สำหรับ op ใน ops array
-
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