LeetCode-in-Java

1975. Maximum Matrix Sum

Medium

You are given an n x n integer matrix. You can do the following operation any number of times:

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:

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:

Solution

public class Solution {
    public long maxMatrixSum(int[][] matrix) {
        int numNegatives = 0;
        long totalSum = 0;
        int minNeg = Integer.MIN_VALUE;
        int minPos = Integer.MAX_VALUE;
        for (int[] ints : matrix) {
            for (int e = 0; e < matrix[0].length; e++) {
                int value = ints[e];
                if (value < 0) {
                    numNegatives++;
                    totalSum = totalSum - value;
                    minNeg = Math.max(value, minNeg);
                } else {
                    totalSum = totalSum + value;
                    minPos = Math.min(value, minPos);
                }
            }
        }

        int min = Math.min(minPos, -minNeg);

        return totalSum - numNegatives % 2 * (min + min);
    }
}