C++实现LeetCode数组练习题( 二 )


再利用第一行和第一列作为标记列 , 遍历整个数组 , 将中间元素为0的第一行和第一列置为0 , 
之后遍历整个数组将第一行和第一列的为0的元素的中间元素置为0 , 之后判断第一行和第一列是否含0 , 改为0即可
class Solution {public void setZeroes(int[][] matrix) {boolean row=false;//标记第一行boolean col=false;//标记第一列int m=matrix.length;//行数int n=matrix[0].length;//列数//检查第一行是否有0 标记for(int i=0;i<n;i++){if(matrix[0][i]==0){row=true;break ;}}//检查第一列是否有0 标记for(int i=0;i<m;i++){if(matrix[i][0]==0){col=true;break ;}}//遍历中间元素 把第一行和第一列置为0for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(matrix[i][j]==0){matrix[i][0]=0;matrix[0][j]=0;}}}//根据第一行第一列的结果 把中间元素置为0for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(matrix[i][0]==0||matrix[0][j]==0){matrix[i][j]=0;}}}//检查第一行是否有最开始为0的if(row){for(int i=0;i<n;i++){matrix[0][i]=0;}}//检查第一列是否有最开始为0的if(col){for(int i=0;i<m;i++){matrix[i][0]=0;}}}}
总结本篇文章就到这里了 , 希望能给你带来帮助 , 也希望您能够多多关注趣讯吧的更多内容!

推荐阅读