• 【LeetCode 73】矩阵置零


    题目链接

    【题解】

    如果a[i][j]==0. 就把第i行的第一个数字置为0 然后把第j列的第一个数字置为0 最后再处理下每行第一个为0的行。每列第一个为0的列。 (第一行和第一列都得用同一个位置处理,所以会冲突。得额外定义一个变量,表示第1行是否需要全都置0) 然后把对应的行。列的元素全都置为0. 但是第一行和第一列的元素需要特别处理。 所以先把第2..n行和2..m列的处理了。 然后处理第一列即看a[1][1]是不是0,判断后改变对应列。 然后看额外定义的变量是否为1. 为1的话就把第一行也置为0. 这样就不会产生冲突了。

    【代码】

    class Solution {
    public:
        void setZeroes(vector<vector<int>>& matrix) {
            if (matrix.empty()) return;
            int n = matrix.size();int m = matrix[0].size();
            int TR = 0;
            for (int i = 0;i < n;i++)
                for (int j = 0;j<m;j++)
                    if (matrix[i][j]==0){
                        matrix[0][j] = 0;
                        if (i==0)
                            TR=1;
                        else
                            matrix[i][0] = 0;
                    }
            for (int i = 1;i<n;i++){
                if (matrix[i][0]==0){
                    for (int j = 0;j < m;j++)
                        matrix[i][j] = 0;
                }
            }
            for (int j = 0;j < m;j++){
                if (matrix[0][j]==0){
                    for (int i = 0;i < n;i++)
                        matrix[i][j] = 0;
                }
            }
            if (TR==1){
                for (int j = 0;j < m;j++){
                    matrix[0][j] = 0;
                }
            }
        }
    };
    
  • 相关阅读:
    党报
    一个人只有敢于承担责任,才有可能被赋予更大的责任。做不
    勇于担当:好男人的三块责任田——
    关于担当
    领导干部要勇于担当
    福布斯专访阿里蔡崇信:马云的坚持和改变
    阿里股权
    ContentProvider
    搞笑段子
    报业
  • 原文地址:https://www.cnblogs.com/AWCXV/p/11911711.html
Copyright © 2020-2023  润新知