leetcode1252

Posted AsenYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1252相关的知识,希望对你有一定的参考价值。

 1 class Solution:
 2     def oddCells(self, n: int, m: int, indices: List[List[int]]) -> int:
 3         matrix = [[0 for _ in range(m)]for _ in range(n)]
 4         row,column = [0] * n,[0] * m
 5         for ri in range(len(indices)):
 6             row[indices[ri][0]] += 1
 7             column[indices[ri][1]] += 1
 8         for r in range(len(row)):
 9             if row[r] > 0:
10                 for j in range(m):
11                     matrix[r][j] += row[r]
12         for c in range(len(column)):
13             if column[c] > 0:
14                 for i in range(n):
15                     matrix[i][c] += column[c]
16         count = 0
17         for i in range(n):
18             for j in range(m):
19                 if matrix[i][j] % 2 == 1:
20                     count += 1
21         return count

这个执行效率偏低,下面进行改进:

 1 class Solution:
 2     def oddCells(self, n: int, m: int, indices: List[List[int]]) -> int:
 3         matrix = [[0 for _ in range(m)]for _ in range(n)]
 4         row,column = [0] * n,[0] * m
 5         count = 0
 6         for ri in range(len(indices)):
 7             row[indices[ri][0]] += 1
 8             column[indices[ri][1]] += 1
 9         for i in range(n):
10             for j in range(m):
11                 if (row[i] + column[j]) % 2 == 1:
12                     count += 1
13         
14         return count

思路:先计算“行”和“列”分别增加了几次。

然后遍历整个二维数组,计算每个元素加1的次数(对应位置的行加1的次数+对应位置列加1的次数)。

增加后,判断此位置是否为奇数(odd),统计所有奇数的个数存储在count中。最后返回count。

 

以上是关于leetcode1252的主要内容,如果未能解决你的问题,请参考以下文章

算法leetcode1252. 奇数值单元格的数目(rust重拳出击)

算法leetcode1252. 奇数值单元格的数目(rust重拳出击)

LeetCode 1252.奇数值单元格的数目:模拟 + 计数:低时间复杂度

Leetcode1252. Cells with Odd Values in a Matrix

LeetCode --- 1252. Cells with Odd Values in a Matrix 解题报告

LeetCode --- 1252. Cells with Odd Values in a Matrix 解题报告