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倍,避免循环中乘法
能循环外加法,就循环外面做
'''