題目以下:app
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.spaReturn the number of cells with odd values in the matrix after applying the increment to all
indices
.codeExample 1:blog
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:ci
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:rem
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,判斷二者之和的奇偶性便可。get
代碼以下:it
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