力扣第73题-矩阵置零
力扣链接:73. 矩阵置零 - 力扣(LeetCode)
给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
"""
思路:
利用两个标记数组,记录数组中行位置为0的行数
记录数组中列位置为0的列数
最终遍历这两个标记的数组,只要行列有一个为0,当前位置就是0
"""def set_zero(matrix):m = len(matrix)n = len(matrix[0])row = [False] * mcol = [False] * n# print(row)# print(col)for i in range(m):for j in range(n):if matrix[i][j] == 0:row[i] = col[j] = Truefor i in range(m):for j in range(n):if row[i] or col[j]:matrix[i][j] = 0return matrixprint(set_zero([[0, 1, 2, 0], [3, 4, 5, 2], [1, 3, 1, 5]]))