1975. Maximum Matrix Sum
思路:
這題的關鍵在於負數的數量
只要是偶數,那一定可以全部變成正數
如果是奇數,那一定會留下一個負數
所以就是去計算負數的數量和紀錄絕對值最小的數並且計算所有絕對值得總和
如果負數是偶數個,那就回傳絕對值總和
如果是奇數個,那就將總和-2*絕對值最小的數
golang code :
func maxMatrixSum(matrix [][]int) int64 {
ans, cnt := 0, 0
minValue := int(1e10)
for _, array := range matrix {
for _, val := range array {
if val < 0 {
cnt++
ans -= val
minValue = min(minValue, -val)
} else {
ans += val
minValue = min(minValue, val)
}
}
}
if cnt&1 == 1 {
ans -= (minValue << 1)
}
return int64(ans)
}