C++, O(n), track sum, min, negs
\nclass Solution {\npublic:\n    long long maxMatrixSum(vector<vector<int>>& matrix) {\n\t\t//each pair of negative signs can be cancelled\n\t\t//if there is on
```\nclass Solution {\npublic:\n    long long maxMatrixSum(vector<vector<int>>& matrix) {\n\t\t//each pair of negative signs can be cancelled\n\t\t//if there is one negative sign left over, move it to the smallest value\n\t\t//delete this value from the sum of absolute values twice - once to cancel the previously-added\n\t\t//abs value of that number, and once to account for the negative contribution\n        int negs = 0;\n        long long min_val = INT_MAX;\n        long long sum = 0;\n        for(int i = 0; i < matrix.size(); i++){\n            for(int j = 0; j < matrix[0].size(); j++){\n                sum += abs(matrix[i][j]);\n                if(matrix[i][j] < 0) negs++;\n                if(abs(matrix[i][j]) < min_val) min_val = abs(matrix[i][j]);\n            }\n        }\n        if(negs % 2 == 0) return sum;\n        else return sum - min_val*2;\n    }\n};\n```
['C']