LeetCode 解题:矩阵置零(O(1) 空间复杂度)
在二维数组(矩阵)类算法题中,矩阵置零 (LeetCode 73) 是一道经典的「空间优化」题目,核心难点在于要求原地操作(空间复杂度 O(1)) —— 即不能额外开辟与矩阵行列数相当的数组来记录需要置零的行和列。该题常见思路包括「额外数组标记」的基础方案,但不符合空间优化要求。最优解利用「矩阵自身第一行 / 第一列做标记」的核心逻辑,完美实现 O(1) 空间复杂度。
一、问题背景:明确「矩阵置零」题目要求
给定一个 m x n 的矩阵 matrix,如果一个元素为 0,那么将其所在的整行和整列都设置为 0。要求在原矩阵上完成操作,且尽可能优化空间复杂度(进阶要求:O(1) 空间复杂度)。
题目示例
输入:
matrix = [
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
输出:
[
[1, 0, 1],
[0, 0, 0],
[1, 0, 1]
]
输入:
matrix = [
[0, 1, 2, 0],
[3, 4, 5, 2],
[1, 3, 1, 5]
]
输出:
[
[0, 0, 0, 0],
[0, 4, 5, 0],
[0, 3, , ]
]

