LeetCode 面试题 01.08. 零矩阵

LeetCode 面试题 01.08. 零矩阵缩略图

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

面试题 01.08. 零矩阵 – 力扣(LeetCode)

LeetCode 面试题 01.08. 零矩阵插图
OpenCV步步精深-可心科创工作室

思路:找到所有0的位置,然后将位置上行列所有元素变成0。

python3实现:

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        # 找到0所在的行和列,然后将对应行和列所有元素置为0
        zero_pos = []
        
        for row_idx in range(len(matrix)):
            each_line = matrix[row_idx]
            # print("each_line:", each_line)
            for every_elem_idx in range(len(each_line)):
                if each_line[every_elem_idx] == 0:
                    # 形式:(行,列)
                    col_idx = every_elem_idx
                    zero_pos.append((row_idx, col_idx))
        # print("所有零的位置:", zero_pos)

        # 将所有零所在位置行和列元素变成0
        for pos in zero_pos:
            # 所有行变0
            for all_elem_idx_rol in range(len(matrix[pos[0]])):
                matrix[pos[0]][all_elem_idx_rol] = 0

            # 所有列变0
            for all_elem_idx_col in range(len(matrix)):
                matrix[all_elem_idx_col][pos[1]] = 0
        # print("matrix:")
        # print(matrix)
LeetCode 面试题 01.08. 零矩阵插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深