码迷,mamicode.com
首页 > 其他好文 > 详细

73. Set Matrix Zeroes

时间:2016-03-17 07:05:30      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

在原地置0:

1.检查第一行和第一列是否有0,有的话用boolean记下来,因为一会需要使用这个空间来记录是否行列里有0

2.检查1到最后行&1到最后一列是否有0,记录在第一行&列中

3.检查1到最后行&1到最后列如果行or列有0,那么置零

4.利用开始的flag,对第一行&第一列置零

 

 1     public void setZeroes(int[][] matrix) {
 2         if(matrix == null || matrix.length == 0 || matrix[0].length == 0) {
 3             return;
 4         }
 5         int row = matrix.length;
 6         int col = matrix[0].length;
 7         boolean rowFlag = false;
 8         boolean colFlag = false;
 9         for(int i = 0; i < row; i++) {
10             if(matrix[i][0] == 0) {
11                 rowFlag = true;
12                 break;
13             }
14         }
15         for(int i = 0; i < col; i++) {
16             if(matrix[0][i] == 0) {
17                 colFlag = true;
18                 break;
19             }
20         }
21         for(int i = 1; i < row; i++) {
22             for(int j = 1; j < col; j++) {
23                 if(matrix[i][j] == 0) {
24                     matrix[i][0] = 0;
25                     matrix[0][j] = 0;
26                 }
27             }
28         }
29         for(int i = 1; i < row; i++) {
30             for(int j = 1; j < col; j++) {
31                 if(matrix[i][0] == 0 || matrix[0][j] == 0) {
32                     matrix[i][j] = 0;
33                 }
34             }
35         }
36         if(rowFlag) {
37             for(int i = 0; i < row; i++) {
38                 matrix[i][0] = 0;
39             }
40         }
41         if(colFlag) {
42             for(int i = 0; i < col; i++) {
43                 matrix[0][i] = 0;
44             }
45         }
46     }

 

73. Set Matrix Zeroes

标签:

原文地址:http://www.cnblogs.com/warmland/p/5285925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!