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. 矩阵置零的主要内容,如果未能解决你的问题,请参考以下文章