列表

详情


3033. 修改矩阵

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

返回矩阵 answer

 

示例 1:

输入:matrix = [[1,2,-1],[4,-1,6],[7,8,9]]
输出:[[1,2,9],[4,8,6],[7,8,9]]
解释:上图显示了发生替换的元素(蓝色区域)。
- 将单元格 [1][1] 中的值替换为列 1 中的最大值 8 。
- 将单元格 [0][2] 中的值替换为列 2 中的最大值 9 。

示例 2:

输入:matrix = [[3,-1],[5,2]]
输出:[[3,2],[5,2]]
解释:上图显示了发生替换的元素(蓝色区域)。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) { } };

rust 解法, 执行用时: 4 ms, 内存消耗: 2.1 MB, 提交时间: 2024-07-05 09:07:26

impl Solution {
    pub fn modified_matrix(mut matrix: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
        for j in 0..matrix[0].len() {
            let mx = matrix.iter().map(|row| row[j]).max().unwrap();
            for row in matrix.iter_mut() {
                if row[j] == -1 {
                    row[j] = mx;
                }
            }
        }
        matrix
    }
}

javascript 解法, 执行用时: 88 ms, 内存消耗: 52.6 MB, 提交时间: 2024-07-05 09:07:12

/**
 * @param {number[][]} matrix
 * @return {number[][]}
 */
var modifiedMatrix = function(matrix) {
    for (let j = 0; j < matrix[0].length; j++) {
        let mx = 0;
        for (const row of matrix) {
            mx = Math.max(mx, row[j]);
        }
        for (const row of matrix) {
            if (row[j] === -1) {
                row[j] = mx;
            }
        }
    }
    return matrix;
};

java 解法, 执行用时: 1 ms, 内存消耗: 44.7 MB, 提交时间: 2024-07-05 09:06:59

class Solution {
    public int[][] modifiedMatrix(int[][] matrix) {
        for (int j = 0; j < matrix[0].length; j++) {
            int mx = 0;
            for (int[] row : matrix) {
                mx = Math.max(mx, row[j]);
            }
            for (int[] row : matrix) {
                if (row[j] == -1) {
                    row[j] = mx;
                }
            }
        }
        return matrix;
    }
}

cpp 解法, 执行用时: 7 ms, 内存消耗: 21.8 MB, 提交时间: 2024-07-05 09:06:48

class Solution {
public:
    vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {
        for (int j = 0; j < matrix[0].size(); j++) {
            int mx = 0;
            for (auto& row: matrix) {
                mx = max(mx, row[j]);
            }
            for (auto& row: matrix) {
                if (row[j] == -1) {
                    row[j] = mx;
                }
            }
        }
        return matrix;
    }
};

golang 解法, 执行用时: 4 ms, 内存消耗: 3.8 MB, 提交时间: 2024-02-19 09:37:33

func modifiedMatrix(matrix [][]int) [][]int {
	for j := range matrix[0] {
		mx := 0
		for _, row := range matrix {
			mx = max(mx, row[j])
		}
		for _, row := range matrix {
			if row[j] == -1 {
				row[j] = mx
			}
		}
	}
	return matrix
}

python3 解法, 执行用时: 47 ms, 内存消耗: 16.6 MB, 提交时间: 2024-02-19 09:36:31

class Solution:
    def modifiedMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
        for j in range(len(matrix[0])):
            mx = max(row[j] for row in matrix)
            for row in matrix:
                if row[j] == -1:
                    row[j] = mx
        return matrix

python3 解法, 执行用时: 45 ms, 内存消耗: 16.6 MB, 提交时间: 2024-02-19 09:35:21

class Solution:
    def modifiedMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
        # 遍历两次,一次统计每列最大值,一次替换
        m, n = len(matrix), len(matrix[0])
        _max_col = [0] * n
        for i in range(n):
            for j in range(m):
                _max_col[i] = max(matrix[j][i], _max_col[i])
                    
        for i in range(m):
            for j in range(n):
                if matrix[i][j] == -1:
                    matrix[i][j] = _max_col[j]
        return matrix

上一题