iven a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

//如果某个元素为0,则把该元素所在的行和列都设为0。本题用了o(1)的space

//先看第一行第一列是不是有0,用fr,fc记录。扫描剩下的元素,如果遇到0,就把对应的第一行第一列元素赋值为0,如matrix[2,3]为0,就把matrix[2,0]和matrix[0,3]设为0。

//从1,1开始扫描,如果元素对应的第一行或第一列元素为0,则把它也设为0

//处理第一行和第一列

class Solution {

    public void setZeroes(int[][] matrix) {

       boolean fr = false;

       boolean fc = false;

       for (int i = 0; i < matrix.length; i++) {

          for (int j = 0; j < matrix[0].length; j++) {

              if (matrix[i][j] == 0) {

                 if (i == 0)

                    fr = true;

                 if (j == 0)

                    fc = true;

                 matrix[0][j] = 0;

                 matrix[i][0] = 0;

             }

          }

       }

       

       for (int i = 1; i < matrix.length; i++) {

          for (int j = 1; j < matrix[0].length; j++) {

              if (matrix[i][0] == 0 || matrix[0][j] == 0) {

                 matrix[i][j] = 0;

             }

          }

       }

       

       if(fr) {

          for(int j = 0; j < matrix[0].length; j++) {

             matrix[0][j] = 0;

          }

       }

       

       if(fc) {

          for(int j = 0; j < matrix.length; j++) {

             matrix[j][0] = 0;

          }

       }

       

   }

}

原文地址:http://www.cnblogs.com/MarkLeeBYR/p/16886782.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性