leetcode 3033 题解

比较简单的一道题。

题目

给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix ,新建一个下标从 0 开始、名为 answer 的矩阵。使 answer 与 matrix 相等,接着将其中每个值为 -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]]

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

思路

双循环,记录需要修改的地方和每列的最大值。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {
int maximun[60]={0}, check[60][60]={0}, hang=matrix.size(), lie=matrix[0].size();
for(int i=0;i<hang;i++) {
for(int j=0;j<lie;j++) {
if(matrix[i][j]>maximun[j]) {
maximun[j]=matrix[i][j];
continue;
}
if(matrix[i][j]==-1) {
check[i][j]=1;
continue;
}
}
}
for(int i=0;i<hang;i++) {
for(int j=0;j<lie;j++) {
if(check[i][j]==1) {
matrix[i][j]=maximun[j];
}
}
}
return matrix;
}
};