# 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

进阶:

 

示例 1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:
[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

 

提示:

以下程序实现了这一功能,请你填补空白处内容: ```cpp #include using namespace std; class Solution { public: void setZeroes(vector> &matrix) { int i = matrix.size(); int j = matrix[0].size(); vector hang(i); vector lie(j); for (int m = 0; m < i; m++) { for (int n = 0; n < j; n++) { if (!matrix[m][n]) { hang[m] = lie[n] = true; } } } for (int m = 0; m < i; m++) { for (int n = 0; n < j; n++) { __________________; } } } }; ``` ## template ```cpp #include using namespace std; class Solution { public: void setZeroes(vector> &matrix) { int i = matrix.size(); int j = matrix[0].size(); vector hang(i); vector lie(j); for (int m = 0; m < i; m++) { for (int n = 0; n < j; n++) { if (!matrix[m][n]) { hang[m] = lie[n] = true; } } } for (int m = 0; m < i; m++) { for (int n = 0; n < j; n++) { if (hang[m] || lie[n]) matrix[m][n] = 0; } } } }; ``` ## 答案 ```cpp if (hang[m] || lie[n]) matrix[m][n] = 0; ``` ## 选项 ### A ```cpp if (hang[m] && lie[n]) matrix[m][n] = 0; ``` ### B ```cpp if (hang[m] >= lie[n]) matrix[m][n] = 0; ``` ### C ```cpp if (hang[m] <= lie[n]) matrix[m][n] = 0; ```