矩阵置零(python解)

本文介绍了一种原地算法,用于处理矩阵中元素为0的情况,通过标记相应行和列来将这些位置及其同行同列的元素设为0。文章详细解释了实现步骤并分享了开发过程中的常见错误及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 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]

解题设计:
第一遍遍历数组时先找到其中为0的元素,然后用两个数组记录下为0元素的两个下标,并将对应的值置为True or False(凭个人喜好),第二次遍历数组时根据两个数组找到同一行和同一列的元素,将其置为0。

踩到的坑:在刚开始运行代码时没有先定义row和column两个数组,直接就赋值了,就一直报了IndexError: list assignment index out of range这个错误,百度了之后发现是没有定义的原因,而后初始化了这两个数组,因为也没在意,所以就用常量初始化了它们的空间,提交的时候一旦测试数据过大,则会报错,所以在初始化这两个数组时还需要对每行进行一次遍历,将两个数组的空间初始化。

代码:

class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        for q in range(len(matrix)):
            row=[None]*(len(matrix))
            column=[None]*(len(matrix[q]))
        
        for i in range(len(matrix)):
            
            for j in range(len(matrix[i])):
                
                if matrix[i][j]==0:
                    row[i]=True
                    column[j]=True
        for m in range(len(matrix)):
            for n in range(len(matrix[i])):
                if (row[m]) or (column[n]):
                    matrix[m][n]=0
        
                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值