समस्या विवरण
मान लीजिए हमारे पास एक m × n मैट्रिक्स M है जिसे सभी 0 से आरंभ किया गया है, और हमारे पास कई अपडेट ऑपरेशन हैं। ऑपरेशन को 2D सरणी द्वारा दर्शाया जाता है, जहां प्रत्येक ऑपरेशन दो धनात्मक पूर्णांक x और y वाला एक सरणी होता है। इसका अर्थ है कि M[i][j] में 1 जोड़ा जाना चाहिए उन सभी i के लिए जो 0 से x-1 की रेंज में हैं और उन सभी j के लिए जो 0 से y-1 की रेंज में हैं। सभी ऑपरेशन करने के बाद मैट्रिक्स में अधिकतम पूर्णांक की संख्या ज्ञात करनी है।
उदाहरण
यदि इनपुट है: m = 3, n = 3 और operations = [[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 |
[3,3] ऑपरेशन के बाद:
| 2 | 2 | 1 |
| 2 | 2 | 1 |
| 1 | 1 | 1 |
हल करने का दृष्टिकोण
इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:
- minR := m, minC := n आरंभ करें
- प्रत्येक ऑपरेशन op के लिए ops सरणी में:
- minR := min(minR, op[0])
- minC := min(minC, op[1])
- minR * minC लौटाएं
C++ कार्यान्वयन
#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;
}
};
int main() {
Solution ob;
vector<vector<int>> v = {{2,2},{3,3}};
cout << (ob.maxCount(3,3,v));
return 0;
}
इनपुट
3,3,{{2,2},{3,3}}
आउटपुट
4