当前位置: 首页> 教育> 锐评 > LeetCode Hot100 73.矩阵置零

LeetCode Hot100 73.矩阵置零

时间:2025/7/11 17:39:27来源:https://blog.csdn.net/chan1ee/article/details/141061579 浏览次数:1次

法一:找到第一个为0的元素的行row和列col,用第row行和第col列的其余位置来记录其余行列清零情况

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {//找到第一个为0的元素的行row和列col//用那一行和列的其余位置来记录其余行列清零情况int col = -1;int row = -1;int flag = 0;for(int i = 0; i < matrix.size(); i++){for(int j = 0; j < matrix[0].size(); j++){if(matrix[i][j] == 0){row = i;col = j;flag = 1;break;}}if(flag) break;}if(flag == 0) return;//记录清零情况for(int i = row; i < matrix.size(); i++){for(int j = 0; j < matrix[0].size(); j++){if(matrix[i][j] == 0){matrix[i][col] = 0;matrix[row][j] = 0;}}}//行清零for(int i = 0; i < matrix.size(); i++){if(i == row) continue;if(matrix[i][col] == 0){for(int j = 0; j < matrix[0].size(); j++){matrix[i][j] = 0;}}}//列清零for(int j = 0; j < matrix[0].size(); j++){if(j == col) continue;if(matrix[row][j] == 0){for(int i = 0; i < matrix.size(); i++){matrix[i][j] = 0;}}}//row和col所在行列清零for(int i = 0; i < matrix.size(); i++){matrix[i][col] = 0;}for(int j = 0; j < matrix[0].size(); j++){matrix[row][j] = 0;}     }
};

法二:用额外数组来需要清零的行和列

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {vector<int> row(matrix.size());vector<int> col(matrix[0].size());for(int i = 0; i < matrix.size(); i++){for(int j = 0; j < matrix[0].size(); j++){if(matrix[i][j] == 0){row[i] = 1;col[j] = 1;}}}for(int i = 0; i < matrix.size(); i++){for(int j = 0; j < matrix[0].size(); j++){if(row[i] || col[j])matrix[i][j] = 0;}}}
};
关键字:LeetCode Hot100 73.矩阵置零

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: