LeetCode. 3033. 修改矩阵

58 阅读1分钟

题目

给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix ,新建一个下标从 0 开始、名为 answer 的矩阵。使 answer 与 matrix 相等,接着将其中每个值为 -1 的元素替换为所在列的 最大 元素。

返回矩阵 answer 。

思路

先循环列后再循环行,如果数值为 -1 保存下标, 在进行一遍列赋值之后将所有为 -1 的下标赋值为该列的最大值

代码

class Solution {
    public int[][] modifiedMatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] ans = new int[m][n];
        //列循环
        for (int i = 0; i < n; i++) {
            List<Integer> zeroList = new ArrayList<>();
            int max = Integer.MIN_VALUE;
            //行循环
            for (int j = 0; j < m; j++) {
                max = Math.max(max, matrix[j][i]);
                if (matrix[j][i] == -1) {
                    zeroList.add(j);
                } else {
                    ans[j][i] = matrix[j][i];
                }
            }
            for (Integer integer : zeroList) {
                ans[integer][i] = max;
            }
        }
        return ans;
    }
}

题解

灵神题解: leetcode.cn/problems/mo…