commit 34565d8da25066822e62482b7baf8245bf9ce8fa
parent d64836d1bff335bf583b5a3271814586898f3fc4
Author: Jack Sangdahl <jack@pngu.org>
Date: Sun, 4 Jan 2026 21:10:29 -0700
1975. maximum matrix sum
Diffstat:
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/maximum_matrix_sum.c b/maximum_matrix_sum.c
@@ -11,19 +11,19 @@
*/
long long maxMatrixSum(int **matrix, int matrixSize, int *matrixColSize) {
- long long sum = 0;
- int neg_cnt = 0, min = INT_MAX;
+ long long total = 0;
+ int min_abs = INT_MAX, neg_cnt = 0;
for (int i = 0; i < matrixSize; i++)
- for (int j = 0; j < matrixSize; j++) {
- if (matrix[i][j] < 0)
+ for (int j = 0; j < matrixColSize[i]; j++) {
+ int curr = matrix[i][j];
+ total += abs(curr);
+ if (curr < 0)
neg_cnt++;
- if (abs(matrix[i][j]) < min)
- min = abs(matrix[i][j]);
- sum += abs(matrix[i][j]);
+ min_abs = fmin(min_abs, abs(curr));
}
- if (!(neg_cnt % 2))
- return sum;
- return sum - (2 * min);
+ if (neg_cnt % 2)
+ total -= 2 * min_abs;
+ return total;
}
int main() {
diff --git a/maximum_matrix_sum.py b/maximum_matrix_sum.py
@@ -16,14 +16,16 @@ class Solution(object):
:type matrix: List[List[int]]
:rtype: int
"""
- ans, mult, val = 0, 0, float("inf")
- for i in range(len(matrix)):
- for j in range(len(matrix)):
- ans += abs(matrix[i][j])
- val = min(val, abs(matrix[i][j]))
- if matrix[i][j] < 0:
- mult ^= 1
- return ans - 2 * mult * val
+ min_abs, neg_cnt, total = float("inf"), 0, 0
+ for i in matrix:
+ for j in i:
+ total += abs(j)
+ if j < 0:
+ neg_cnt += 1
+ min_abs = min(min_abs, abs(j))
+ if neg_cnt % 2 != 0:
+ total -= 2 * min_abs
+ return total
if __name__ == "__main__":