首页 > 代码库 > careercup-数组和字符串1.7
careercup-数组和字符串1.7
1.7 编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零。
类似于leetcode中的 Set Matrix Zeroes
C++实现代码:
#include<iostream>#include<vector>using namespace std;void setMatricZero(vector<vector<int> > &matrix){ if(matrix.empty()||matrix[0].empty()) return; int i,j; int m=matrix.size(); int n=matrix[0].size(); int rflag=0; int cflag=0; for(i=0; i<m; i++) if(matrix[i][0]==0) rflag=1; for(j=0; j<n; j++) if(matrix[0][j]==0) cflag=1; for(i=1; i<m; i++) for(j=1; j<n; j++) if(matrix[i][j]==0) { matrix[i][0]=0; matrix[0][j]=0; } for(i=1; i<m; i++) for(j=1; j<n; j++) { if(matrix[i][0]==0||matrix[0][j]==0) matrix[i][j]=0; } if(rflag) { for(i=0; i<m; i++) matrix[i][0]=0; } if(cflag) { for(j=0; j<n; j++) matrix[0][j]=0; }}int main(){ vector<vector<int> > matrix= { {0,12,13,14}, {15,16,17,18}, {19,0,21,22}, {23,24,25,26} }; setMatricZero(matrix); for(auto a:matrix) { for(auto t:a) cout<<t<<" "; cout<<endl; }}
careercup-数组和字符串1.7
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。