题目描述
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零 。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/zero-matrix-lcci著作权归领扣网络所有 。商业转载请联系官方授权,非商业转载请注明出处 。
开始解题()
可以使用两个额外的列表分别记录需要清零的行和列的索引 。首先遍历整个矩阵,将为0的元素的行和列的索引分别加入到对应的列表中 。然后再次遍历整个矩阵,将需要清零的行和列对应的元素置为0 。
具体的算法如下:
初始化两个空列表,分别用来记录需要清零的行和列的索引 。遍历整个矩阵,对于每一个元素,如果其值为0,则将其所在的行和列的索引分别加入到对应的列表中 。再次遍历整个矩阵,对于每一个元素,如果其所在的行或列的索引在对应的列表中,则将该元素置为0 。返回清零后的矩阵 。
下面是使用实现的代码:
def setZeroes(matrix):row_zeroes = []# 记录需要清零的行的索引col_zeroes = []# 记录需要清零的列的索引# 第一次遍历,记录需要清零的行和列的索引for i in range(len(matrix)):for j in range(len(matrix[0])):if matrix[i][j] == 0:row_zeroes.append(i)col_zeroes.append(j)# 第二次遍历,将需要清零的行和列对应的元素置为0for i in range(len(matrix)):for j in range(len(matrix[0])):if i in row_zeroes or j in col_zeroes:matrix[i][j] = 0return matrix# 测试示例matrix1 = [[1,1,1],[1,0,1],[1,1,1]]print(setZeroes(matrix1))matrix2 = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]print(setZeroes(matrix2))
实际应用
这个函数的实际应用可以在处理矩阵数据时非常有用 。以下是一些可能的应用场景:
图像处理:在图像处理中,可以使用该函数来清除图像中的噪点 。将图像表示为一个矩阵,如果某个像素值为0,则将其所在的行和列清零,从而清除噪点 。数据分析:在数据分析中,经常需要对大量数据进行处理和转换 。如果某个数据集中存在异常值,可以将数据集表示为一个矩阵,使用该函数将异常值所在的行和列清零,从而排除异常值对分析结果的影响 。矩阵运算:在进行矩阵运算时,可能会遇到某些元素为0的情况 。使用该函数可以将0所在的行和列清零,避免零元素对计算结果产生不必要的影响 。
【用于清除图像中的噪点ChatGPT刷力扣面试题 01.08. 零矩阵】总的来说,该函数可以帮助我们在处理矩阵数据时快速定位并清除某些不需要的元素,提高数据的准确性和处理效率 。
- chatgpt赋能python:Python数据散点图:用于数据可视化的强大工具
- 蜜罐子
- 通过CSIG—走进合合信息探讨生成式AI及文档图像处理的前景和价值
- 2.1、基于光源和噪声的拼接图像篡改检测方法
- 磷化铝可以用于食品杀虫吗
- GPT-4发布:多模态大模型,AI能力再度进化,可识别图像内容
- 真的!只需 “六步” 实现图像特定物体识别!!!
- 拭剑石
- Chatbox - 一款适用于 GPT-4 / GPT-3
- 【图像生成与编辑】最新进展!