当前位置 : 主页 > 编程语言 > python >

2022-07-12 1252. 奇数值单元格的数目

来源:互联网 收集:自由互联 发布时间:2022-07-13
题目: 给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。另有一个二维索引数组 indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(

题目:

给你一个 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)函数一行完成。

上一篇:函数
下一篇:没有了
网友评论