2024-11-24 Daily Challenge

Today I have done leetcode's November LeetCoding Challenge with cpp.

November LeetCoding Challenge 24

Description

Maximum Matrix Sum

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.

 

Constraints:

  • n == matrix.length == matrix[i].length
  • 2 <= n <= 250
  • -105 <= matrix[i][j] <= 105

Solution

class Solution {
public:
  long long maxMatrixSum(vector<vector<int>>& matrix) {
    long long answer = 0;
    int negCount = 0;
    int minAbso = INT_MAX;
    for(const auto &row : matrix) {
      for(auto c : row) {
        answer += abs(c);
        minAbso = min(minAbso, abs(c));
        negCount += c < 0;
      }
    }
    if(negCount & 1) {
      answer -= 2 * minAbso;
    }
    return answer;
  }
};