मान लें n और m हैं जो एक मैट्रिक्स के आयाम हैं। ये शून्य से इनिशियलाइज़्ड हैं। और इंडेक्स दिए गए हैं जहां indices[i] = [ri, ci]। [ri, ci] के प्रत्येक जोड़े के लिए हमें पंक्ति ri और स्तंभ ci में सभी सेल्स को 1 से बढ़ाना है। आउटपुट सभी इंडेक्स पर वृद्धि लागू करने के बाद मैट्रिक्स में विषम मान वाले सेल्स की संख्या होगी।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- odd := 0 इनिशियलाइज़ करें, और x := मैट्रिक्स की पंक्ति संख्या
- एक मैट्रिक्स mat बनाएं
- i को 0 से x की रेंज में लिए
- r = input[i, 0], c = input[i, 1],
- j को 0 से m – 1 की रेंज में लिए
- mat[r, j] := mat[r, j] + 1
- j को 0 से n – 1 की रेंज में लिए
- mat[j, c] := mat[j, c] + 1
- i को 0 से n – 1 की रेंज में लिए
- j := 0 से m – 1 के लिए
- odd := odd + mat[i, j] बिटवाइज OR 1 के साथ
- j := 0 से m – 1 के लिए
- odd लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें −
#include <bits/stdc++.h> using namespace std; class Solution { public: int oddCells(int n, int m, vector<vector<int>>& in) { int odd = 0; int x = in.size(); vector < vector <int> > mat(n, vector <int>(m)); for(int i = 0; i < x ;i++){ int r = in[i][0]; int c = in[i][1]; for(int j = 0; j < m; j++){ mat[r][j]++; } for(int j = 0; j < n; j++){ mat[j][c]++; } } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++)odd += mat[i][j] & 1; } return odd; } }; main(){ Solution ob; vector<vector<int>> c = {{0,1},{1,1}}; cout << ob.oddCells(2,3,c); }इनपुट
2 3 {{0,1},{1,1}}आउटपुट
6