清除行列
来源:互联网 发布:mac微信文件保存位置 编辑:程序博客网 时间:2024/05/22 02:26
题目描述
请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。
给定一个MxN的int[][]矩阵(C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。
测试样例:
[[1,2,3],[0,1,2],[0,0,1]]
返回:[[0,0,3],[0,0,0],[0,0,0]]
思路:遍历二维数组,记录值为0的行号、列好,,然后根据行号、列号,逐位清零
C/C++实现
用到动态数组声明并初始化,,
class Clearer {public: vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { // write code here //bool row[n]; //bool colum [n]; if(mat.empty()) return vector<vector<int> >(); int len1=mat.size(); int len2=mat[0].size(); bool *row=new bool[len1]();//切记声明后一定要加小括号初始化,否则报错!! bool *colum =new bool[len2](); for (int i=0;i<len1;i++) for(int j=0; j<len2;j++){ if(mat[i][j]==0) { row[i]=true; colum[j]=true; } } for (int i=0;i<len1;i++) for(int j=0; j<len2;j++){ if(row[i] || colum[j] ){ mat[i][j]=0; } } delete [] row; delete [] colum ; return mat; }};
Java实现
Java实现相对较为简单
import java.util.*;public class Clearer { public int[][] clearZero(int[][] matrix, int n) { // write code here boolean[] row = new boolean[n]; boolean[] column = new boolean[n]; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 0) { row[i] = true; column[j] = true; } } } for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if(row[i] || column[j]) { matrix[i][j] = 0; } } } return matrix ; }}
0 0
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 清除行列(Java)
- 第四天 清除行列
- 【矩阵】清除行列
- ViewGroup1——自定义布局
- nginx配置spawn-fastcgi执行自己编写的CGI程序(c/c++)
- 爱萌即时通讯使用 - Other linker flags设置
- 利用openssl库进行RSA加密
- Python读写文件的方式
- 清除行列
- Linux中一些文件缩写名词stc/bin/rt/tty/dev
- UVa 10140 - Prime Distance
- Dialog的几种方式
- C共用体
- 机器学习之——归一化
- 发布地图打印服务注意事项
- CentOS安装Haproxy源码编译安装
- Java利用Properties类操作属性文件