⭐️
# 題目敘述
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.
# 解題思路
# Complexity
Time complexity:
Space complexity:
# Solution
class Solution { | |
public long maxMatrixSum(int[][] matrix) { | |
long result = 0; | |
long isOdd = 0; | |
int min = Integer.MAX_VALUE; | |
for(int matrixRow[] : matrix) { | |
for(int num : matrixRow) { | |
int abs = Math.abs(num); | |
result += abs; | |
min = Math.min(min, abs); | |
isOdd ^= (num >>> 31); | |
} | |
} | |
return result - ((min << 1) & -isOdd); | |
} | |
} |
單字
** **
!! !!
片語 & 搭配詞
!! !!
