⭐️

# 題目敘述

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.

# 解題思路

# Complexity

  • Time complexity: O(n2)O(n^2)

  • Space complexity: O(1)O(1)

# Solution

Bitwise
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);
    }
}


單字

** **
!! !!

片語 & 搭配詞

!! !!