2022-12-08 2482

2022-12-07  本文已影响0人  木马音响积木

2482 leetcode

给你一个下标从 0 开始的 m x n 二进制矩阵 grid 。

我们按照如下过程,定义一个下标从 0 开始的 m x n 差值矩阵 diff :

令第 i 行一的数目为 onesRowi 。
令第 j 列一的数目为 onesColj 。
令第 i 行零的数目为 zerosRowi 。
令第 j 列零的数目为 zerosColj 。
diff[i][j] = onesRowi + onesColj - zerosRowi - zerosColj
请你返回差值矩阵 diff 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/difference-between-ones-and-zeros-in-row-and-column
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def onesMinusZeros(self, grid: List[List[int]]) -> List[List[int]]:
        yirow =[2*sum(a) for a in grid] 
        yishu =[2*sum(a) for a in zip(*grid)]  
        y=len(yirow) 
        x=len(yishu)  
        g=-y-x
        ans =[]
        for a in range(y):
            t=[]
            se =yirow[a]+g
            for b in range(x):
                t.append(se +yishu[b]) 
            ans.append(t)
        return ans
'''
推导过程,以及尽量减少循环内的计算量
diff[i][j] = onesRowi + onesColj - zerosRowi - zerosColj
zeroRowi = x - onesRowi 
zerosColj =y -onesColj
g=-x-y
diff[i][j] = onesRowi*2 + onesColj*2 +g
最一开始,就2倍,避免循环中乘法 
能循环外加法,就循环外面做
'''


上一篇 下一篇

猜你喜欢

热点阅读