1252. Cells with Odd Values in a Matrix

Difficulty:
Related Topics:
Similar Questions:

    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:

    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:

      Follow up: Could you solve this in O(n + m + indices.length) time with only O(n + m) extra space?

    Solution (Java)

    class Solution {
        public int oddCells(int n, int m, int[][] indices) {
            int[][] matrix = new int[n][m];
            for (int[] index : indices) {
                addOneToRow(matrix, index[0]);
                addOneToColumn(matrix, index[1]);
            }
            int oddNumberCount = 0;
            for (int[] ints : matrix) {
                for (int j = 0; j < matrix[0].length; j++) {
                    if (ints[j] % 2 != 0) {
                        oddNumberCount++;
                    }
                }
            }
            return oddNumberCount;
        }
    
        private void addOneToColumn(int[][] matrix, int columnIndex) {
            for (int i = 0; i < matrix.length; i++) {
                matrix[i][columnIndex] += 1;
            }
        }
    
        private void addOneToRow(int[][] matrix, int rowIndex) {
            for (int j = 0; j < matrix[0].length; j++) {
                matrix[rowIndex][j] += 1;
            }
        }
    }
    

    Explain:

    nope.

    Complexity: