import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @return int整型二维数组
*/
public int[][] avoidPuddles (int[][] matrix) {
// write code here
int m = matrix.length;
int n = matrix[0].length;
int[][] result = new int[m][n];
// 遍历矩阵,将水洼所在的行和列标记为-1
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0) {
for (int k = 0; k < m; k++) {
result[k][j] = -1;
}
for (int k = 0; k < n; k++) {
result[i][k] = -1;
}
}
}
}
// 标记未被牛吃掉的草地为matrix中非0的元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (result[i][j] != -1) {
result[i][j] = matrix[i][j];
}
}
}
return result;
}
}
Java代码
这道题主要涉及到矩阵的遍历和标记。
知识点:
- 矩阵遍历:
- 条件判断
代码解释:
- 初始化矩阵的行数和列数。
- 创建一个新的二维数组 result,用于存储结果。
- 第一个嵌套循环用于遍历原始矩阵,找到水洼所在的行和列,并在 result 数组中标记为-1。
- 第二个嵌套循环遍历 result 数组,将未被牛吃掉的草地标记为对应的原始矩阵元素值。
- 返回标记后的 result 数组作为结果。

京公网安备 11010502036488号