本文主要是介绍LeetCode73题:矩阵置零(python3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码思路:
这里用矩阵的第一行和第一列来标记是否含有0的元素,但这样会导致原数组的第一行和第一列被修改,无法记录它们是否原本包含 0。因此我们需要额外使用两个标记变量分别记录第一行和第一列是否原本包含 0。
class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""row = len(matrix) #代表矩阵的行col = len(matrix[0]) #代表矩阵第一列row0_flag = False #额外行变量记录行是否含0col0_flag = False #额外列变量记录列是否含0for j in range(col):if matrix[0][j] == 0: #对于第一行各个列含0row0_flag = Truebreakfor i in range(row):if matrix[i][0] == 0: #对于第一列各个行含0col0_flag =Truebreakfor i in range(1,row): #第一行到最后一行for j in range(1,col): #第一列到最后一列if matrix[i][j] == 0: #如果有一个值为0#则这一行这一列都为0matrix[i][0] = matrix[0][j] = 0 for i in range(1,row):for j in range(1,col): if matrix[i][0] == 0 or matrix[0][j] == 0:matrix[i][j] = 0if row0_flag: #如果行flag成立,那么第一行所有全为0for j in range(col):matrix[0][j] = 0if col0_flag: #如果列flag成立,那么第一列所有全为0for i in range(row):matrix[i][0] = 0
这篇关于LeetCode73题:矩阵置零(python3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!