73. 矩阵置零
题目链接:https://leetcode.cn/problems/set-matrix-zeroes/description/?source=vscode
解析:
还是很有趣的一题,两个点
1、行列分开标记
2、用第0行和第0列来标记其他行和列,那0行,0列怎么办?只需要两个变量标记0行、0列是否有0即可,那(0, j) 或者 (i, 0)谁来标记?当然是(0, j) 或者 (i, 0)
3、这是对2的另一种思考,因为(i, j)为0,则表示i行和j列全部取0,那所有的状态都可以转移到第0行、第0列上。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
bool flag_row = false, flag_col = false;
int n = matrix.size();
int m = matrix[0].size();
for (int i = 0; i < n; i++) {
if (!matrix[i][0]) {
flag_col = true;
break;
}
}
for (int j = 0; j < m; j++) {
if (!matrix[0][j]) {
flag_row = true;
break;
}
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
if (matrix[i][j] == 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
if (!matrix[i][0] || !matrix[0][j]) matrix[i][j] = 0;
}
}
if (flag_row) {
for (int j = 0; j < m; j++) matrix[0][j] = 0;
}
if (flag_col) {
for (int i = 0; i < n; i++) matrix[i][0] = 0;
}
}
};
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

浙公网安备 33010602011771号