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.
Input: matrix = [[1,-1],[-1,1]]Output: 4Explanation: 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.
Input: matrix = [[1,2,3],[-1,-2,-3],[1,2,3]]Output: 16Explanation: We can follow the following step to reach sum equals 16:- Multiply the 2 last elements in the second row by -1.
class Solution: # Time: O(n^2) # Space: O(1) def max_matrix_sum(self, matrix: list[list[int]]) -> int: total = 0 neg_count = 0 min_abs = 10**9 for row in matrix: for value in row: total += abs(value) neg_count += value < 0 min_abs = min(min_abs, abs(value)) if neg_count % 2: total -= 2 * min_abs return total