将矩阵中元素0所在的行和列置为0
来源:互联网 发布:activiti python 编辑:程序博客网 时间:2024/06/06 06:03
给定一个m*n的矩阵,将矩阵中元素0所在的行和列置为0,比如:
1,2,3,41,0,3,4
2,0,1,3 ==》 0,0,0,0
1,2,3,21,0,1,3
解法一:可以申请两个布尔数组row[m],col[n]保存元素0所在的行列下标。
解法二:
设置两个变量标记第0行和第0列是否有零。
从第一行,第一列开始扫描数组,如果a[i][j]==0,则置a[i][0]=0,a[0][j]=0
再次从第一行,第一列开始扫描数组,如果该行第一个元素或是该列第一个元素为0,就将该元素置为0;再次处理第0行和第0列。
空间复杂度为O(1)。
#include<iostream>using namespace std;void Set(int *a,int m,int n){bool row=false,col=false;for(int i=0;i<n;i++)if(a[i]==0){row=true;break;}for(int j=0;j<m;j++)if(a[j*n]==0){col=true;break;}for(i=1;i<m;i++)for(j=1;j<n;j++){if(a[i*n+j]==0){a[i*n]=a[j]=0;}}for(i=1;i<m;i++)for(j=1;j<n;j++)if(a[i*n]==0||a[j]==0)a[i*n+j]=0;if(row){for(j=0;j<n;j++)a[j]=0;}if(col){for(i=0;i<m;i++)a[i*n]=0;}}int main(){int a[3][4]={1,2,3,4,1,3,0,2,1,3,2,1};cout<<"before:"<<endl;for(int i=0;i<3;i++){for(int j=0;j<4;j++)cout<<a[i][j]<<" ";cout<<endl;}Set(*a,3,4);cout<<"after:"<<endl;for(i=0;i<3;i++){for(int j=0;j<4;j++)cout<<a[i][j]<<" ";cout<<endl;}}
0 0
- 将矩阵中元素0所在的行和列置为0
- 将M*N矩阵中0元素所在的行、列的元素全部置为0
- 【Java】若MxN矩阵中某个元素为0, 则将其所在的行与列清零
- 矩阵中有0的元素,将它所在的行和列的元素设置为0
- 将矩阵中值为0的元素所在的行和列设置为0, in-place O(1)space O(mn) time
- 将矩阵含有0所在的行和列清零
- 9.1数组与字符串(六)——若M*N矩阵中某个元素为0,则将其所在的行与列清零
- 程序员面试金典1.7:若M*N矩阵中某个元素为0,则将其所在的行与列清零
- 《程序员面试金典》--清除二维数组中元素为0所在的行和列
- 【前端面试】清除二维数组中元素为0所在的行和列
- 请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。 给定一个MxN的int[][]矩阵(C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中
- 将数组中0元素所在的行和列都置为0
- 如果矩阵中某个元素为0,那么把它所在的行和列都置为0
- 清除行列 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int[][](C++中为vector<vector><int>>)mat和矩阵的阶数n,请返回完成操
- 面试7之请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。
- 给定一个m×n矩阵,如果一个元素为0,则将其整行和列的值设置为0.
- 将二维矩阵0元素所在行列都标记为0
- 每天一道LeetCode-----给定一个矩阵,如果某个元素是0,就将所在行所在列上所有元素否置0
- 从头说catalan数及笔试面试里那些相关的问题
- nsarry&nsdictionary
- Python random模块
- 【LeetCode】Balanced Tree & Binary Search Tree
- MVC入门的一个例子(一)
- 将矩阵中元素0所在的行和列置为0
- jsp Hibernate 数据持久化技术(一)
- 【HDU 4453】 Looploop(Splay)
- UVALive 6459 Infinite Go (模拟,搜索)
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 文件分割,make及makefile的使用
- hdu1142 A Walk Through the Forest(前向星+SPFA解法)
- 12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
- 我经历的那些骗局(要承认, 骗子智商比我们高)———今天一IT程序猿哥们被骗4-5万, 遂有感而发