对矩阵的每一行进行一次排序(从小到大,从大到小都可以),然后遍历矩阵中的每一列,选取每列中最大的元素,然后求和。
假设矩阵是 m x n
1. 时间复杂度:O(mnlogn)
每行排序的时间复杂度是 O(nlogn),有 m 行需要排序。后面每列选最大元素求和的时间复杂度是 O(m * n)。所以总时间复杂度是 O(m * nlogn) + O(m * n) = O(mnlogn)
2. 空间复杂度:O(n)
对每一行进行排序的空间复杂度是 O(logn)
class Solution {
public int matrixSum(int[][] nums) {
for (int[] row : nums) {
Arrays.sort(row);
}
int ans = 0;
for (int i = 0; i < nums[0].length; ++i) {
int max = -1;
for (int j = 0; j < nums.length; ++j) {
max = Math.max(nums[j][i], max);
}
ans += max;
}
return ans;
}
}