@ninijia 在 Leetcode每日一题练习 ------ 1975. 最大方阵和 中发帖
从Leetcode 每日一题练习继续讨论:
1975. 最大方阵和
1975. Maximum Matrix Sum
题解
本题通过不断将相邻数字变为自己的相反数的操作,最终一定可以将负数变为相邻位置(相当于对负号进行了传递),这时再进行一次操作即可使得两个负数都变为正数。因此遍历并记录数组中负数的个数,同时记录下绝对值最小的数(在加和时减少的最少)。若负数个数为偶数则直接将数字全部变为正数加和,若为奇数则除绝对值最小的保持为负数外其余均按照正数加和。
因此本题可以直接将所有负数均变为正数并加和,最后根据总体负数的奇偶性再对绝对值最小的数进行加减。这样仅需遍历一遍数组就能得到结果。
这样计算没有考虑包含0的情况,在包含0的情况下,所有负数均可通过将负号最终传递给0从而变成正数,0自身是没有符号的,就像黑洞一样吸掉了全部符号。因此在包含0的情况下无需考虑负数个数的奇偶性,直接将所有...