สมมติว่ามี n และ m ซึ่งเป็นมิติของเมทริกซ์ สิ่งเหล่านี้เริ่มต้นโดยศูนย์ และให้ดัชนีโดยที่ indices[i] =[ri, ci] สำหรับ [ri, ci] แต่ละคู่ เราต้องเพิ่มเซลล์ทั้งหมดในแถว ri และคอลัมน์ ci ขึ้น 1 ผลลัพธ์จะเป็นจำนวนเซลล์ที่มีค่าคี่ในเมทริกซ์หลังจากนำส่วนเพิ่มไปใช้กับดัชนีทั้งหมด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เริ่มต้นเลขคี่ :=0 และ x :=จำนวนแถวของเมทริกซ์
- สร้างเมทริกซ์แมท
- สำหรับ i ในช่วง 0 ถึง x
- r =อินพุต[i, 0], c =อินพุต[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] ระดับบิตหรือ 1
- สำหรับ j :=0 ถึง m – 1
- ผลตอบแทนคี่
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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