LeetCode100-73矩阵置零

发布于:2025-08-31 ⋅ 阅读:(30) ⋅ 点赞:(0)

本文基于各个大佬的文章

上点关注下点赞,明天一定更灿烂!


前言

        Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导~

        您的每一条评论都会让我更有学习的动力。


一、分析题目

二、思路以及代码

不要啊,矩阵问题,这个我真的一点都找不到规律,虽然级别是中等,在我这边算难上加难。

我有个想法是这样的:因为是把同行同列置零,所有置零后相当于缩小了一个单位矩阵,每次看当前矩阵的第一行第一列有没有0,有的话就置零,缩小矩阵,没有的话看第二行第二列。不行不行我脑子又乱了,看题解吧,遇到困难就要放弃。73. 矩阵置零 - 力扣(LeetCode)

博主第一个用的算是打暴力了哈哈,喜欢喜欢

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        row = len(matrix)
        col = len(matrix[0])
        row_zero = set()
        col_zero = set()
        for i in range(row):
            for j in range(col):
                if matrix[i][j] == 0:
                    row_zero.add(i)
                    col_zero.add(j)
        for i in range(row):
            for j in range(col):
                if i in row_zero or j in col_zero:
                    matrix[i][j] = 0

第二个好像思路跟我开始的有点一样,利用矩阵本身的第一行和第一列作为“标记”或者“辅助存储空间”,来记录哪些行和哪些列需要被置为零。

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        row = len(matrix)
        col = len(matrix[0])
        row0_flag = False
        col0_flag = False
        # 找第一行是否有0
        for j in range(col):
            if matrix[0][j] == 0:
                row0_flag = True
                break
        # 第一列是否有0
        for i in range(row):
            if matrix[i][0] == 0:
                col0_flag = True
                break

        # 把第一行或者第一列作为 标志位
        for i in range(1, row):
            for j in range(1, col):
                if matrix[i][j] == 0:
                    matrix[i][0] = matrix[0][j] = 0
        #print(matrix)
        # 置0
        for i in range(1, row):
            for j in range(1, col):
                if matrix[i][0] == 0 or matrix[0][j] == 0:
                    matrix[i][j] = 0

        if row0_flag:
            for j in range(col):
                matrix[0][j] = 0
        if col0_flag:
            for i in range(row):
                matrix[i][0] = 0

三、本题收获

我还是更适合打暴力,y1s1


总结

        只会打暴力,基础一团糟,明天再学吧老铁,别真学会了。


网站公告

今日签到

点亮在社区的每一天
去签到