LeetCode 1975. Maximum Matrix Sum
You are given an?n x n
?integer?matrix
. You can do the following operation?any?number of times:
Choose any two?adjacent?elements of?
matrix
?and?multiply?each of them by?-1
.
Two elements are considered?adjacent?if and only if they share a?border.
Your goal is to?maximize?the summation of the matrix's elements. Return?the?maximum?sum of the matrix's elements using the operation mentioned above.
?
Example 1:

Input: matrix = [[1,-1],[-1,1]]
Output: 4
Explanation:?
We can follow the following steps to reach sum equals 4:?
- Multiply the 2 elements in the first row by -1.?
- Multiply the 2 elements in the first column by -1.
Example 2:
Input: matrix = [[1,2,3],[-1,-2,-3],[1,2,3]]
Output: 16
Explanation:?
We can follow the following step to reach sum equals 16:?
- Multiply the 2 last elements in the second row by -1.
?

因為2個相鄰的數(shù)字可以同時乘以-1,所以我們就可以將任意的數(shù)字組合乘以-1,這時候就要計算數(shù)組中一共有多少個負數(shù),如果是偶數(shù)個,那么一定可以全部取正,如果是奇數(shù)個,我們就讓最小的那個數(shù)字變成負數(shù)即可;
剩下就是幾個變量,求和項(所有數(shù)取絕對值),負數(shù)的數(shù)量,最小的數(shù)(絕對值之后);
然后分2種情況依次返回即可;
題目不算太難的。
Constraints:
n == matrix.length == matrix[i].length
2 <= n <= 250
-105?<= matrix[i][j] <= 105
Runtime:?6 ms, faster than?93.02%?of?Java?online submissions for?Maximum Matrix Sum.
Memory Usage:?53 MB, less than?36.05%?of?Java?online submissions for?Maximum Matrix Sum.