• [Leetcode] Set Matrix Zeroes


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

    如果不用额外空间的话,可以把第一行与第一列作为标记行与标记列,但是得先确定第一行与第一列本身要不要设为0。

     1 class Solution {
     2 public:
     3     void setZeroes(vector<vector<int> > &matrix) {
     4         if (matrix.size() < 1) return;
     5         int row = matrix.size(), col = matrix[0].size();
     6         bool r0 = false, c0 = false;
     7         for (int i = 0; i < row; ++i) {
     8             if (matrix[i][0] == 0) {
     9                 c0 = true; break;
    10             }
    11         }
    12         for (int j = 0; j < col; ++j) {
    13             if (matrix[0][j] == 0) {
    14                 r0 = true; break;
    15             }
    16         }
    17         for (int i = 1; i < row; ++i) {
    18             for (int j = 1; j < col; ++j) {
    19                 matrix[i][0] = (matrix[i][j] == 0) ? 0 : matrix[i][0];
    20                 matrix[0][j] = (matrix[i][j] == 0) ? 0 : matrix[0][j];
    21             }   
    22         }
    23         for (int i = 1; i < row; ++i) {
    24             for (int j = 1; j < col; ++j) {
    25                  matrix[i][j] = (matrix[i][0] == 0) ? 0 : matrix[i][j];
    26                  matrix[i][j] = (matrix[0][j] == 0) ? 0 : matrix[i][j];
    27             }   
    28         }
    29         for (int i = 0; i < row && c0; ++i)  matrix[i][0] = 0;
    30         for (int j = 0; j < col && r0; ++j)  matrix[0][j] = 0;
    31     }
    32 };
  • 相关阅读:
    VS Code设置同步
    ASP.NET Core 发布
    CMD命令
    通过注册表为文件(夹)添加右键菜单
    win+r 以管理员身份运行
    .NET Core部署Windows服务
    .NET Core的打包到一个exe程序
    C#枚举
    C#生成Guid
    使用Visual Studio的单元测试
  • 原文地址:https://www.cnblogs.com/easonliu/p/3647177.html
Copyright © 2020-2023  润新知