IT评测·应用市场-qidao123.com技术社区

标题: 39 矩阵置零 [打印本页]

作者: 河曲智叟    时间: 2024-12-10 10:08
标题: 39 矩阵置零
39 矩阵置零


39.1 矩阵置零办理方案

解题思路

  1. class Solution {
  2. public:
  3.     void setZeroes(vector<vector<int>>& matrix) {
  4.         int m = matrix.size();
  5.         int n = matrix[0].size();
  6.         // 标记第一行和第一列是否需要置零
  7.         bool rowZero = false;
  8.         bool colZero = false;
  9.         // 检查第一行是否包含0
  10.         for(int i = 0 ; i < n ;i++){
  11.             if(matrix[0][i] == 0){
  12.                 rowZero = true;
  13.                 break;
  14.             }
  15.         }
  16.         // 检查第一行是否包含0
  17.         for(int i = 0 ; i < m ;i++){
  18.             if(matrix[i][0] == 0){
  19.                 colZero = true;
  20.                 break;
  21.             }
  22.         }
  23.         // 用第一行和第一列来标记需要置零的行和列
  24.         for(int i = 1; i < m ; i++ ){
  25.             for(int j = 1; j < n ; j++){
  26.                 if(matrix[i][j] == 0){
  27.                     matrix[i][0] = 0; // 标记所在行的第一列
  28.                     matrix[0][j] = 0; // 标记所在列的第一行
  29.                     
  30.                 }
  31.             }
  32.         }
  33.         for(int i = 1; i < m ; i++ ){
  34.             for(int j = 1; j < n ; j++){
  35.                 if(matrix[i][0] == 0 || matrix[0][j] == 0){
  36.                     matrix[i][j] = 0;
  37.                 }
  38.             }
  39.         }
  40.         // 处理第一行是否需要置零
  41.         if(rowZero){
  42.             for(int i = 0; i < n; i++){
  43.                 matrix[0][i] = 0;
  44.             }
  45.         }
  46.         // 处理第一列是否需要置零
  47.         if(colZero){
  48.             for(int i = 0; i < m ; i++){
  49.                 matrix[i][0] = 0;
  50.             }
  51.         }
  52.     }
  53. };
复制代码
代码解释

时间复杂度和空间复杂度

39.2 举例阐明

假设有以下矩阵:
  1. 1  2  3
  2. 4  0  6
  3. 7  8  9
复制代码

  1. 1  2  3
  2. 4  0  6
  3. 7  8  9
复制代码

  1. 1  2  3
  2. 0  0  6
  3. 7  8  9
复制代码

矩阵变为:
  1. 1  2  3
  2. 0  0  6
  3. 7  8  9
复制代码

  1. 1  2  0
  2. 0  0  0
  3. 7  8  0
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4