ধরুন n এবং m হল একটি ম্যাট্রিক্সের ডাইমেনশন। এগুলো শূন্য দিয়ে ইনিশিয়ালাইজড। এবং indices দেওয়া আছে যেখানে indices[i] = [ri, ci]। প্রতিটি [ri, ci] পেয়ারের জন্য ri রো এবং ci কলামের সব সেল ১ দিয়ে ইনক্রিমেন্ট করতে হবে। আউটপুট হবে সব indices-এ ইনক্রিমেন্ট প্রয়োগ করার পর ম্যাট্রিক্সে বিজোড় ভ্যালুвых সেলগুলোর সংখ্যা।
এটি সমাধানের জন্য, আমরা নিচের ধাপগুলো অনুসরণ করব −
- odd := 0 ইনিশিয়ালাইজ করুন, এবং x := ম্যাট্রিক্সের রো কাউন্ট
- একটি ম্যাট্রিক্স mat তৈরি করুন
- for i in range 0 to x
- r = input[i, 0], c = input[i, 1],
- for j in range 0 to m – 1
- mat[r, j] := mat[r, j] + 1
- for j in range 0 to n – 1
- mat[j, c] := mat[j, c] + 1
- for i in range 0 to n – 1
- for j := 0 to m – 1
- odd := odd + mat[i, j] বিটওয়াইজ OR with 1
- for j := 0 to m – 1
- return 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