题目:
给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。
另有一个二维索引数组 indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。
对 indices[i] 所指向的每个位置,应同时执行下述增量操作:
ri 行上的所有单元格,加 1 。
ci 列上的所有单元格,加 1 。
给你 m、n 和 indices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/cells-with-odd-values-in-a-matrix
解:
class Solution:
def oddCells(self, m: int, n: int, indices: List[List[int]]) -> int:
lst = [[0 for j in range(n)]for i in range(m)]
for indice in indices:
row,col = indice
for i in range(m):
lst[i][col] +=1
for j in range(n):
lst[row][j] += 1
res = 0
for row in lst:
for x in row:
if x%2 == 1:
res += 1
return res
看了官方题解后,发现可以优化到10行:
class Solution:
def oddCells(self, m: int, n: int, indices: List[List[int]]) -> int:
lst = [[0 for j in range(n)]for i in range(m)]
for indice in indices:
row,col = indice
for i in range(m):
lst[i][col] +=1
for j in range(n):
lst[row][j] += 1
return sum(x%2 for row in lst for x in row )
统计二维列表中奇数的个数,可以列表推导+sum(iterable)函数一行完成。