当前位置:网站首页>面试题 01.08. 零矩阵
面试题 01.08. 零矩阵
2022-07-04 21:23:00 【Mr Gao】
面试题 01.08. 零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
void dfs(int **matrix,int n ,int m,int row,int col,int *rrow,int* rcol ){
int i;
// printf("- %d %d ",col,row);
if(rrow[row]==1){
rrow[row]=0;
for(i=0;i<m;i++){
if(matrix[row][i]!=0){
matrix[row][i]=-999;
}
else{
if(rrow[row]==1||rcol[i]==1){
dfs(matrix,n , m, row, i,rrow,rcol);
}
}
}
}
if(rcol[col]==1){
rcol[col]=0;
for(i=0;i<n;i++){
if(matrix[i][col]!=0){
matrix[i][col]=-999;
}
else{
if(rrow[i]==1||rcol[col]==1){
dfs(matrix, n , m, i, col,rrow,rcol);
}
}
}
}
}
void setZeroes(int** matrix, int matrixSize, int* matrixColSize){
int n=matrixSize;
int m=matrixColSize[0];
int *rrow=(int *)malloc(sizeof(int)*n);
int *rcol=(int *)malloc(sizeof(int)*m);
int i,j;
for(i=0;i<n;i++){
rrow[i]=1;
}
for(i=0;i<m;i++){
rcol[i]=1;
}
printf("df");
for(i=0;i<n;i++){
if(rrow[i]==1){
for(j=0;j<m;j++){
if(matrix[i][j]==0){
dfs(matrix,n , m, i, j,rrow,rcol);
break;
}
}
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(matrix[i][j]==-999){
matrix[i][j]=0;
}
}
}
}
这里也有一种比较简单的算法,标记出现过0的行和列,然后进行遍历那个那两个存储存储行和列的数组,这种方法就比较简单了
边栏推荐
猜你喜欢

CloudCompare&Open3D DBSCAN聚类(非插件式)
![Jerry's ad series MIDI function description [chapter]](/img/28/e0f9b41db597ff3288af431c677001.png)
Jerry's ad series MIDI function description [chapter]

超详细教程,一文入门Istio架构原理及实战应用

一文掌握数仓中auto analyze的使用
![[weekly translation go] how to code in go series articles are online!!](/img/bf/77253c87bfa1512f4b8d3d8f7ebe80.png)
[weekly translation go] how to code in go series articles are online!!

Daily question -leetcode1200- minimum absolute difference - array - sort

bizchart+slider实现分组柱状图

What is business intelligence (BI), just look at this article is enough

Redis has three methods for checking big keys, which are necessary for optimization
![[C language] deep understanding of symbols](/img/4b/26cf10baa29eeff08101dcbbb673a2.png)
[C language] deep understanding of symbols
随机推荐
Jerry's ad series MIDI function description [chapter]
MYSQL 用!=查询不出等于null的数据,解决办法
minidom 模块写入和解析 XML
Go语言循环语句(第10课中3)
【C語言】符號的深度理解
GTEST from ignorance to proficient use (2) what is test fixture
bizchart+slider实现分组柱状图
How to use concurrentlinkedqueue as a cache queue
Jerry's ad series MIDI function description [chapter]
minidom 模塊寫入和解析 XML
SolidWorks工程图添加材料明细表的操作
Kubedm initialization error: [error cri]: container runtime is not running
Lambdaquerywrapper usage
[weekly translation go] how to code in go series articles are online!!
el-tree结合el-table,树形添加修改操作
什么是商业智能(BI),就看这篇文章足够了
如何借助自动化工具落地DevOps
Spatiotemporal prediction 3-graph transformer
How to remove the black dot in front of the title in word document
[public class preview]: basis and practice of video quality evaluation