[leetCode 丶 20241128] 3033. 修改矩阵

原题:

https://leetcode.cn/problems/modify-the-matrix/description/


描述:

描述


个人版答案

执行用时: 12 ms 执行内存消耗: 44.90 M

class Solution { public int[][] modifiedMatrix(int[][] matrix) { List<Integer/* jMax */> max = new ArrayList<>(); Map<Integer/* j */, List<String/* i,j */>> idx = new HashMap<>(); // 循环填充 防止位置无效 for(int i = 0; i<51;i++){ max.add(-1); idx.put(i, new ArrayList<>()); } // 遍历二维数组 for (int i = 0; i < matrix.length; i++) { // 外层循环遍历行 for (int j = 0; j < matrix[i].length; j++) { // 内层循环遍历列 int m = matrix[i][j]; if(max.get(j) < m){ // 最大值 max.set(j, m); } if(m == -1){ List<String> index = idx.get(j); index.add(i+","+j); idx.put(j, index); } } } // 遍历最大值列表 for(int i= 0;i< max.size(); i++){ int m = max.get(i); List<String> index = idx.get(i); if(index.size() != 0 && m != -1){ for(String ix: index){ String[] x = ix.split(","); matrix[Integer.parseInt(x[0])][Integer.parseInt(x[1])] = m; } } } return matrix; } }

优秀解法

执行耗时: 0 ms

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

个人解题思路与优秀答案解析

题目分析及个人版思路

  1. 遍历...回填...我的代码虽然不是最优... 但是最清晰...哈哈哈哈哈哈
  2. 反正我又不比赛

进阶版思路
果然我是正常人. 跟着题目走... 大佬都是跟着解题方法走