|
| 1 | +package com.fishercoder.solutions; |
| 2 | + |
| 3 | +/** |
| 4 | + * 1252. Cells with Odd Values in a Matrix |
| 5 | + * |
| 6 | + * Given n and m which are the dimensions of a matrix initialized by zeros and given an array indices where indices[i] = [ri, ci]. For each pair of [ri, ci] you have to increment all cells in row ri and column ci by 1. |
| 7 | + * Return the number of cells with odd values in the matrix after applying the increment to all indices. |
| 8 | + * |
| 9 | + * Example 1: |
| 10 | + * 0, 0, 0 1, 2, 1 1, 3, 1 |
| 11 | + * 0, 0, 0 0, 1, 0 1, 3 ,1 |
| 12 | + * |
| 13 | + * Input: n = 2, m = 3, indices = [[0,1],[1,1]] |
| 14 | + * Output: 6 |
| 15 | + * Explanation: Initial matrix = [[0,0,0],[0,0,0]]. |
| 16 | + * After applying first increment it becomes [[1,2,1],[0,1,0]]. |
| 17 | + * The final matrix will be [[1,3,1],[1,3,1]] which contains 6 odd numbers. |
| 18 | + * |
| 19 | + * Example 2: |
| 20 | + * 0, 0 0, 1 2, 2 |
| 21 | + * 0, 0 1, 2 2, 2 |
| 22 | + * |
| 23 | + * Input: n = 2, m = 2, indices = [[1,1],[0,0]] |
| 24 | + * Output: 0 |
| 25 | + * Explanation: Final matrix = [[2,2],[2,2]]. There is no odd number in the final matrix. |
| 26 | + * |
| 27 | + * |
| 28 | + * Constraints: |
| 29 | + * 1 <= n <= 50 |
| 30 | + * 1 <= m <= 50 |
| 31 | + * 1 <= indices.length <= 100 |
| 32 | + * 0 <= indices[i][0] < n |
| 33 | + * 0 <= indices[i][1] < m |
| 34 | + * */ |
| 35 | +public class _1252 { |
| 36 | + public static class Solution1 { |
| 37 | + public int oddCells(int n, int m, int[][] indices) { |
| 38 | + int[][] matrix = new int[n][m]; |
| 39 | + for (int i = 0; i < indices.length; i++) { |
| 40 | + addOneToRow(matrix, indices[i][0]); |
| 41 | + addOneToColumn(matrix, indices[i][1]); |
| 42 | + } |
| 43 | + int oddNumberCount = 0; |
| 44 | + for (int i = 0; i < matrix.length; i++) { |
| 45 | + for (int j = 0; j < matrix[0].length; j++) { |
| 46 | + if (matrix[i][j] % 2 != 0) { |
| 47 | + oddNumberCount++; |
| 48 | + } |
| 49 | + } |
| 50 | + } |
| 51 | + return oddNumberCount; |
| 52 | + } |
| 53 | + |
| 54 | + private void addOneToColumn(int[][] matrix, int columnIndex) { |
| 55 | + for (int i = 0; i < matrix.length; i++) { |
| 56 | + matrix[i][columnIndex] += 1; |
| 57 | + } |
| 58 | + } |
| 59 | + |
| 60 | + private void addOneToRow(int[][] matrix, int rowIndex) { |
| 61 | + for (int j = 0; j < matrix[0].length; j++) { |
| 62 | + matrix[rowIndex][j] += 1; |
| 63 | + } |
| 64 | + } |
| 65 | + } |
| 66 | +} |
0 commit comments