Leetcode73. Set Matrix Zeroes

本文详细解析了在矩阵中寻找并标记所有值为0的元素位置,随后将这些元素所在行和列的所有值统一置零的算法实现。通过记录0元素的坐标,避免了边遍历边修改带来的额外0值增加问题,确保了算法的正确性和效率。

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

思路:要在matrix上面直接进行修改,如果边遍历,边修改的话,使得原来的matrix改变了,0的个数也变多了,所以要在原来的matrix中,直接记录下来0所在的位置的横坐标和纵坐标,再后面对matrix进行一起修改。

import copy
def change_row_column(nums, i, j):  # 修改第i行和第j列的元素都变成0
    for x in range(len(nums[0])):
        nums[i][x] = 0  # row
    for y in range(len(nums)):
        nums[y][j] = 0 # column
    return nums
    
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        
        idx = []
        for i in range(len(matrix)):
            for j in range(len(matrix[i])):
                if matrix[i][j] == 0:
                    # nums = change_row_column(nums, i, j)  
                    idx.append([i, j])
        for i in range(len(idx)):
            change_row_column(matrix, idx[i][0], idx[i][1])
        
                    
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值