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 数组作为结果。