1252. Cells with Odd Values in a Matrix
There is an m x n matrix that is initialized to all 0's. There is also a 2D array indices where each i n d i c e s i = r i , c i indicesi = r_i, c_i indicesi=ri,ci represents a 0-indexed location to perform some increment operations on the matrix.
For each location indicesi, do both of the following:
- Increment all the cells on row r i r_i ri.
- Increment all the cells on column c i c_i ci.
Given m, n, and indices, return the number of odd-valued cells in the matrix after applying the increment to all locations in indices.
Example 1:

Input: m = 2, n = 3, indices = \[0,1,1,1]
Output: 6
Explanation: Initial matrix = \[0,0,0,0,0,0].
After applying first increment it becomes \[1,2,1,0,1,0].
The final matrix is \[1,3,1,1,3,1], which contains 6 odd numbers.
Example 2:

Input: m = 2, n = 2, indices = \[1,1,0,0]
Output: 0
Explanation: Final matrix = \[2,2,2,2]. There are no odd numbers in the final matrix.
Constraints:
- 1 <= m, n <= 50
- 1 <= indices.length <= 100
- 0 < = r i < m 0 <= r_i < m 0<=ri<m
- 0 < = c i < n 0 <= c_i < n 0<=ci<n
From: LeetCode
Link: 1252. Cells with Odd Values in a Matrix
Solution:
Ideas:
- Instead of updating the whole matrix, only track how many times each row and column is incremented.
- Use two arrays:
- rowsi = number of increments on row i
- colsj = number of increments on column j
- For each operation r, c, do:
- rowsr++
- colsc++
- A cell (i, j) is incremented rowsi + colsj times.
- If (rowsi + colsj) is odd, that cell is odd.
- Count all such cells.
Code:
c
int oddCells(int m, int n, int** indices, int indicesSize, int* indicesColSize) {
int rows[50] = {0};
int cols[50] = {0};
for (int i = 0; i < indicesSize; i++) {
rows[indices[i][0]]++;
cols[indices[i][1]]++;
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if ((rows[i] + cols[j]) % 2 == 1) {
ans++;
}
}
}
return ans;
}