73. 矩阵置零

Posted 心脏dance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了73. 矩阵置零相关的知识,希望对你有一定的参考价值。

题目链接:力扣

思路:因为m和n最大是200,所以就算每个数都不一样最多有400个不同的数,所以我们从0到400中必然能找到一个数与矩阵中所有数都不一样的值,我们就用这个数来标记就可以了。注意:标记的时候不能改变原先为0的值,因为后面还要用原先为0的值来做改变。最后把标记的值变成0就可以了。

时间复杂度:O(401*mn)

空间复杂度:O(1)

上代码:

class Solution 
    fun setZeroes(matrix: Array<IntArray>): Unit 
        var mark = 0

        for (markValue in 0..400) 
            var flag = false
            for (i in matrix.indices) 
                for (j in matrix[0].indices) 
                    if (markValue == matrix[i][j]) 
                        flag = true
                        break
                    
                
                if (flag) break
            
            if (!flag) 
                mark = markValue
                break
            
        

        for (i in matrix.indices) 
            for (j in matrix[0].indices) 
                if (matrix[i][j] == 0) 
                    for (k in matrix[0].indices) 
                        if (matrix[i][k] != 0) 
                            matrix[i][k] = mark
                        
                    
                    for (k in matrix.indices) 
                        if (matrix[k][j] != 0) 
                            matrix[k][j] = mark
                        
                    
                
            
        

        for (i in matrix.indices) 
            for (j in matrix[0].indices) 
                if (matrix[i][j] == mark) 
                    matrix[i][j] = 0
                
            
        
    

 

以上是关于73. 矩阵置零的主要内容,如果未能解决你的问题,请参考以下文章

73#矩阵置零

Leetcode刷题Python73. 矩阵置零

leetcode-73 矩阵置零

Python描述 LeetCode 73. 矩阵置零

Python描述 LeetCode 73. 矩阵置零

Python描述 LeetCode 73. 矩阵置零