2023-07-04 2679. 矩阵中的和

173 阅读1分钟

leetcode.cn/problems/su…

对矩阵的每一行进行一次排序(从小到大,从大到小都可以),然后遍历矩阵中的每一列,选取每列中最大的元素,然后求和。

假设矩阵是 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;
    }
}