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

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

题目:


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

相关文章
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
37 1
|
算法 测试技术 C#
C++前缀和算法应用:矩形区域不超过 K 的最大数值和
C++前缀和算法应用:矩形区域不超过 K 的最大数值和
09_每个行中找最大值
09_每个行中找最大值
|
7月前
18.把1~100存到一维数组a[100]中,并输出。要求每行输出10个,数据所占宽度相同
18.把1~100存到一维数组a[100]中,并输出。要求每行输出10个,数据所占宽度相同
43 3
wustojc5001求若干整数的最大值
wustojc5001求若干整数的最大值
64 0
|
7月前
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出”error”,若构成三角形,计算它的面积,保留2位小数输出。
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出”error”,若构成三角形,计算它的面积,保留2位小数输出。
63 0
练习>>在二维数组中找出最大数,并输出行,列
练习>>在二维数组中找出最大数,并输出行,列
115 0
|
7月前
|
存储 算法 Java
数值问题
数值问题
98 1
|
7月前
leetcode-363:矩形区域不超过 K 的最大数值和
leetcode-363:矩形区域不超过 K 的最大数值和
41 0
在Word中让公式在中间,公式编号右对齐
在Word中让公式在中间,公式编号右对齐