1975. Maximum Matrix Sum
Description
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
matrixand 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.
Constraints:
n == matrix.length == matrix[i].length2 <= n <= 250-105 <= matrix[i][j] <= 105
Solutions
Solution: Greedy
- Time complexity: O(n2)
- Space complexity: O(1)
JavaScript
js
/**
* @param {number[][]} matrix
* @return {number}
*/
const maxMatrixSum = function (matrix) {
const n = matrix.length;
let sum = 0;
let minValue = Number.MAX_SAFE_INTEGER;
let negativeCount = 0;
for (let row = 0; row < n; row++) {
for (let col = 0; col < n; col++) {
if (matrix[row][col] < 0) {
negativeCount += 1;
}
const value = Math.abs(matrix[row][col]);
sum += value;
minValue = Math.min(value, minValue);
}
}
return negativeCount % 2 ? sum - minValue * 2 : sum;
};