【leetcode】1252. Cells with Odd Values in a Matrix
题目如下:
Given
n
andm
which are the dimensions of a matrix initialized by zeros and given an arrayindices
whereindices[i] = [ri, ci]
. For each pair of[ri, ci]
you have to increment all cells in rowri
and columnci
by 1.Return the number of cells with odd values in the matrix after applying the increment to all
indices
.Example 1:
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:
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
解题思路:首先遍历indices,计算出每行每列分别做了几次+1的操作。然后再遍历matrix,根据matrix[i][j]求得对应的i行和j列分别做了几次+1,判断两者之和的奇偶性即可。
代码如下:
class Solution(object): def oddCells(self, n, m, indices): """ :type n: int :type m: int :type indices: List[List[int]] :rtype: int """ dic_row = {} dic_column = {} for (r,c) in indices: dic_row[r] = dic_row.setdefault(r,0) + 1 dic_column[c] = dic_column.setdefault(c, 0) + 1 res = 0 for i in range(n): for j in range(m): count = dic_row.get(i,0) + dic_column.get(j,0) if count % 2 == 1:res += 1 return res