难度

  • 简单
  • 中等
  • 困难

    标签

题目描述

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

示例1:

  1. 输入:
  2. [
  3. [1,1,1],
  4. [1,0,1],
  5. [1,1,1]
  6. ]
  7. 输出:
  8. [
  9. [1,0,1],
  10. [0,0,0],
  11. [1,0,1]
  12. ]

实例2:

  1. 输入:
  2. [
  3. [0,1,2,0],
  4. [3,4,5,2],
  5. [1,3,1,5]
  6. ]
  7. 输出:
  8. [
  9. [0,0,0,0],
  10. [0,4,5,0],
  11. [0,3,1,0]
  12. ]

题解

  1. class Solution {
  2. public void setZeroes(int[][] matrix) {
  3. int[] row = new int[matrix.length];
  4. int[] col = new int[matrix[0].length];
  5. for(int i = 0; i < matrix.length; i++) {
  6. for(int j = 0; j < matrix[0].length; j++) {
  7. if(matrix[i][j] == 0) {
  8. row[i] = 1;
  9. col[j] = 1;
  10. }
  11. }
  12. }
  13. for(int i = 0; i < matrix.length; i++) {
  14. for(int j = 0; j < matrix[0].length; j++) {
  15. if(row[i] == 1 || col[j] == 1) {
  16. matrix[i][j] = 0;
  17. }
  18. }
  19. }
  20. }
  21. }