当前位置:   article > 正文

Leetcode每日一题 20240705 3033.修改矩阵

Leetcode每日一题 20240705 3033.修改矩阵

题目描述

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

测试案例及提示

示例 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]]

提示:
m == matrix.length
n == matrix[i].length
2 <= m, n <= 50
-1 <= matrix[i][j] <= 100
测试用例中生成的输入满足每列至少包含一个非负整数。

解题思路

整体思路:遍历一次matrix,如果是-1就把这一列最大的元素加入结果数组,否则就直接加入。那么如何求每一列的最大值就是一个问题了,这里可以考虑两种方式,一种是python中的zip()函数,可以对列表进行转置,然后获取最大值。另一种是常规的遍历,但需要先遍历列再遍历行。
Python代码实现:

class Solution:
    def modifiedMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
        h = len(matrix) # 行
        l = len(matrix[0])  # 列
        ans = [[None for _ in range(l)] for _ in range(h)]  # 目标数组
        tran_matrix = zip(*matrix)
        max_nums = [max(column) for column in tran_matrix]
        for i,row in enumerate(matrix):
            for j, element in enumerate(row):
                if element == -1:
                    ans[i][j] = max_nums[j]
                else:
                    ans[i][j] = element
        return ans
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Java代码实现:

class Solution {
    public int[][] modifiedMatrix(int[][] matrix) {
        int h = matrix.length;
        int l = matrix[0].length;
        int[][] ans = new int[h][l];
        for (int j = 0; j < l; j++) {
            int max_num = -1;
            for (int i = 0; i < h; i++) {
                if (matrix[i][j] > max_num) {
                    max_num = matrix[i][j];
                }
            }
            for (int i = 0; i < h; i++) {
                ans[i][j] = matrix[i][j] == -1 ? max_num : matrix[i][j];
            }
        }
        return ans;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

小声bb:Python什么都好,就是不用Numpy的话创建二维数组不直观,不方便。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/795491
推荐阅读
相关标签
  

闽ICP备14008679号