【数组】73. 矩阵置零

题目:

【数组】73. 矩阵置零

 

 

解答:

【数组】73. 矩阵置零

  A. 先确定第一行和第一列是否需要清零;
    B. 扫描剩下的矩阵元素,如果遇到了0,就将对应的第一行和第一列上的元素赋值为0;
    C. 根据第一行和第一列的信息,已经可以将剩下的矩阵元素赋值为结果所需的值了;
    D. 根据1中确定的状态,处理第一行和第一列;

 

 

 1 class Solution {
 2 public:
 3     void setZeroes(vector<vector<int>>& matrix) 
 4     {
 5         if (matrix.size() == 0) 
 6         {
 7             return;
 8         }
 9         const int m = matrix.size();
10         const int n = matrix[0].size();
11 
12         bool firstRow = false;
13         bool firstCol = false;
14 
15         for (int i = 0; i < m; i++) 
16         {
17             for (int j = 0; j < n; j++)
18             {
19                 const int item = matrix[i][j];
20                 if (item == 0) 
21                 {
22                     if (i == 0) 
23                     {
24                         firstRow = true;
25                     }
26                     if (j == 0) 
27                     {
28                         firstCol = true;
29                     }
30                     matrix[0][j] = 0;
31                     matrix[i][0] = 0;
32                 }
33             }
34         }
35 
36         for (int i = 1; i < m; i++) 
37         {
38             for (int j = 1; j < n; j++) 
39             {
40                 const int item = matrix[i][j];
41                 if (matrix[0][j] == 0 || matrix[i][0] == 0) 
42                 {
43                     matrix[i][j] = 0;
44                 }
45             }
46         }
47         // 修改第一行和第一列
48         if (firstRow) 
49         {
50             for (int i = 0; i < n; i++) 
51             {
52                 matrix[0][i] = 0;
53             }
54         }
55 
56         if (firstCol) 
57         {
58             for (int i = 0; i < m; i++) 
59             {
60                 matrix[i][0] = 0;
61             }
62         }
63     }
64 };

 

上一篇:javaweb-springboot-2-73


下一篇:第73天: itchat 微信机器人简介