1252. Cells With Odd Values in a Matrix

1252. Cells with Odd Values in a Matrix #

Problem #

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.

Return the number of cells with odd values in the matrix after applying the increment to all indices.

Example 1:

https://assets.leetcode.com/uploads/2019/10/30/e1.png

Input: n = 2, m = 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 will be [[1,3,1],[1,3,1]] which contains 6 odd numbers.

Example 2:

https://assets.leetcode.com/uploads/2019/10/30/e2.png

Input: n = 2, m = 2, indices = [[1,1],[0,0]]
Output: 0
Explanation: Final matrix = [[2,2],[2,2]]. There is no odd number in the final matrix.

Constraints:

  • 1 <= n <= 50
  • 1 <= m <= 50
  • 1 <= indices.length <= 100
  • 0 <= indices[i][0] < n
  • 0 <= indices[i][1] < m

Problem Summary #

You are given a matrix with n rows and m columns. Initially, the value in each cell is 0. There is also an index array indices, where ri and ci in indices[i] = [ri, ci] represent the specified row and column respectively (numbered from 0). You need to add 1 to the values of all cells in the row and column specified by each pair [ri, ci]. After performing all increment operations specified by indices, return the number of “cells with odd values” in the matrix.

Constraints:

  • 1 <= n <= 50
  • 1 <= m <= 50
  • 1 <= indices.length <= 100
  • 0 <= indices[i][0] < n
  • 0 <= indices[i][1] < m

Solution Approach #

  • Given an n * m matrix and an array containing some row and column coordinates, add 1 to the specified coordinates, and ask for the total number of odd numbers in the final n * m matrix.
  • The brute-force method is to simulate according to the problem statement.

Code #


package leetcode

// Solution 1: Brute force
func oddCells(n int, m int, indices [][]int) int {
	matrix, res := make([][]int, n), 0
	for i := range matrix {
		matrix[i] = make([]int, m)
	}
	for _, indice := range indices {
		for i := 0; i < m; i++ {
			matrix[indice[0]][i]++
		}
		for j := 0; j < n; j++ {
			matrix[j][indice[1]]++
		}
	}
	for _, m := range matrix {
		for _, v := range m {
			if v&1 == 1 {
				res++
			}
		}
	}
	return res
}

// Solution 2: Brute force
func oddCells1(n int, m int, indices [][]int) int {
	rows, cols, count := make([]int, n), make([]int, m), 0
	for _, pair := range indices {
		rows[pair[0]]++
		cols[pair[1]]++
	}
	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			if (rows[i]+cols[j])%2 == 1 {
				count++
			}
		}
	}
	return count
}


Calendar Jun 25, 2026
Edit Edit this page
Total visits:   You are visitor No.
中文