2482 leetcode
給你一個(gè)下標(biāo)從 0 開始的 m x n 二進(jìn)制矩陣 grid 。
我們按照如下過程,定義一個(gè)下標(biāo)從 0 開始的 m x n 差值矩陣 diff :
令第 i 行一的數(shù)目為 onesRowi 娱局。
令第 j 列一的數(shù)目為 onesColj 燃逻。
令第 i 行零的數(shù)目為 zerosRowi 。
令第 j 列零的數(shù)目為 zerosColj 缚忧。
diff[i][j] = onesRowi + onesColj - zerosRowi - zerosColj
請(qǐng)你返回差值矩陣 diff 体箕。
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/difference-between-ones-and-zeros-in-row-and-column
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有专钉。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)挑童,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處累铅。
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
'''
推導(dǎo)過程,以及盡量減少循環(huán)內(nèi)的計(jì)算量
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倍娃兽,避免循環(huán)中乘法
能循環(huán)外加法,就循環(huán)外面做
'''