音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | 矩阵置零
552 字
3 分钟
LeetCode | 矩阵置零
分类:数组 / 矩阵
题目#
给定一个 m x n 的矩阵 matrix。如果某个元素为 0,就把它所在的整行和整列都设为 0。
要求直接修改原矩阵。
示例:
1输入:2[3 [1, 1, 1],4 [1, 0, 1],5 [1, 1, 1]6]7
8输出:9[10 [1, 0, 1],11 [0, 0, 0],12 [1, 0, 1]13]讲解#
这道题不能看到 0 就立刻把整行整列改成 0。
原因是:新改出来的 0 会影响后面的判断,导致本来不该被清零的位置也被清零。
所以要分两步:
- 先记录哪些行、哪些列需要变成
0。 - 再统一把这些行和列改成
0。
这里直接使用标记数组:
row_0[row]表示第row行要不要变成0col_0[col]表示第col列要不要变成0
先扫描一遍矩阵。只要看到 matrix[row][col] == 0,就把 row_0[row] 和 col_0[col] 标记为 1。
再扫描一遍矩阵。如果当前位置的行被标记了,或者列被标记了,就把这个位置改成 0。
复杂度:
- 时间复杂度:
O(mn) - 空间复杂度:
O(m + n)
吐槽:
官方题解还有两个标记变量和一个标记变量的写法,时间复杂度都是 O(mn),空间复杂度可以做到 O(1)。它们会复用矩阵的第一行、第一列做标记,笔者觉得,可读性不如这个版本;实际开发里一般也不至于为了这点空间把代码写得那么绕,所以这里不写。
代码#
源码#
1from typing import List2
3
4class Solution:5 def setZeroes(self, matrix: List[List[int]]) -> None:6 """7 Do not return anything, modify matrix in-place instead.8 """9 m = len(matrix)10 n = len(matrix[0])11
12 row_0 = [0] * m13 col_0 = [0] * n14
15 for row in range(0,m):16 for col in range (0,n):17 if matrix[row][col] == 0 :18 row_0[row],col_0[col] = 1,119
20 for row in range(0,m):21 for col in range (0,n):22 if (row_0[row] or col_0[col]) :23 matrix[row][col] = 0测试#
1from src.python._073_Set_Matrix_Zeroes import Solution2
3
4sol = Solution()5
6matrix = [[1, 1, 1], [1, 0, 1], [1, 1, 1]]7assert sol.setZeroes(matrix) is None8assert matrix == [[1, 0, 1], [0, 0, 0], [1, 0, 1]]9
10matrix = [[0, 1, 2, 0], [3, 4, 5, 2], [1, 3, 1, 5]]11sol.setZeroes(matrix)12assert matrix == [[0, 0, 0, 0], [0, 4, 5, 0], [0, 3, 1, 0]]13
14matrix = [[1, 0]]15sol.setZeroes(matrix)16assert matrix == [[0, 0]]17
18matrix = [[1], [0]]19sol.setZeroes(matrix)20assert matrix == [[0], [0]]21
22print("PASS")参考资料#
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
最后更新于 2026-07-31
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 搜索二维矩阵
LeetCodeLeetCode 搜索二维矩阵题解:把矩阵看作一维数组做二分,或者先定位行再二分查找。
2
LeetCode | 移动零
LeetCodeLeetCode 移动零题解:使用双指针原地移动零,同时保持非零元素相对顺序。
3
LeetCode | 接雨水
LeetCodeLeetCode 接雨水题解:理解每个位置的左右挡板,用双指针在线性时间内计算总积水量。
4
LeetCode | 搜索插入位置
LeetCodeLeetCode 搜索插入位置题解:用二分查找在升序数组中找到目标位置或插入位置。
5
LeetCode | 最长连续序列
LeetCodeLeetCode 最长连续序列题解:使用哈希集合只从连续序列起点开始统计最长长度。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!
日
一
二
三
四
五
六
文章目录
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!



