Problem
There is an m x n
matrix that is initialized to all 0
’s. There is also a 2D array indices
where each indices[i] = [ri, ci]
represents a 0-indexed location to perform some increment operations on the matrix.
For each location indices[i]
, do both of the following:
- Increment all the cells on row
ri
. - Increment all the cells on column
ci
.
Given m
, n
, and indices
, return _thenumber of odd-valued cells in the matrix after applying the increment to all locations in _indices
.
Examples
Example 1
|
|
Example 2
|
|
Constraints
1 <= m, n <= 50
1 <= indices.length <= 100
0 <= ri < m
0 <= ci < n
Follow up: Could you solve this in O(n + m + indices.length)
time with
only O(n + m)
extra space?
Solution
Method 1 – Row and Column Parity Counting
Intuition: Instead of simulating the entire matrix, we can just count how many times each row and column is incremented. The parity (odd/even) of the sum of increments for each cell determines if it’s odd. This is much more efficient than updating the matrix directly.
Approach:
- Initialize two arrays: one for row increments and one for column increments.
- For each index in
indices
, increment the corresponding row and column counters. - For each cell, its value is odd if the sum of its row and column increments is odd.
- Count and return the number of such cells.
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(m + n + len(indices))
- 🧺 Space complexity:
O(m + n)