清除行列(程序员面试金典)
来源:互联网 发布:淘宝闪电付款 编辑:程序博客网 时间:2024/04/30 05:33
清除行列
- 参与人数:1233时间限制:3秒空间限制:32768K
- 通过比例:27.49%
- 最佳记录:20 ms|8700K(来自 OOACMer)
- 算法知识视频讲解
题目描述
请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。
给定一个MxN的int[][]矩阵(C++中为vector<vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector<vector>),保证n小于等于300,矩阵中的元素为int范围内。
测试样例:
[[1,2,3],[0,1,2],[0,0,1]]
返回:[[0,0,3],[0,0,0],[0,0,0]]
思路:没想到比O(m*n)时间复杂度还快的,有思路的可以交流下;
没什么别的方法,我用row,line来记录行列中是否有0;首先初始化为1;当mat[i][j]出现0的时候,将row[i]=0;line[j]=0; 遍历一遍;
最后,再遍历一遍把row或者line里有0 的地方就把值变成0,否则记录原值!
方法比较直接。。。
/**题目描述请编写一个算法,若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]]**/#include<iostream>#include<vector>using namespace std;class Clearer {public: vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { vector<vector<int> > vec; if(mat.size()<=0||n==0) return vec; vector<int> row(mat.size(),1); vector<int> line(n,1); for(int i=0;i<mat.size();i++) { for(int j=0;j<mat[i].size();j++) { if(!mat[i][j]) { row[i]=0; line[j]=0; } } } for(int i=0;i<mat.size();i++) { vector<int> tmp; for(int j=0;j<mat[i].size();j++) { if(!row[i] || !line[j]) tmp.push_back(0); else tmp.push_back(mat[i][j]); } vec.push_back(tmp); tmp.clear(); } return vec; }};void Print(vector<vector<int> > &v){ for(size_t i=0;i<v.size();i++) { for(size_t j=0;j<v[i].size();j++) cout<< v[i][j] <<" "; cout<<endl; }}int main(){ vector<vector<int> >arr={{1,2,3},{0,1,2},{0,0,1}}; Print(arr); Clearer cl ; arr=cl.clearZero(arr,3); Print(arr); return 0;}
0 0
- 清除行列(程序员面试金典)
- 《程序员面试金典》清除行列
- 程序员面试金典 1.7 清除行列
- 程序员面试金典题解 清除行列
- 【程序员面试金典】清除行列
- 程序员面试金典-7.清除行列
- 程序员面试金典——清除行列
- 《Cracking the Coding Interview程序员面试金典》----清除行列
- 程序员面试金典:数组--像素翻转、清除行列
- 程序员面试金典(7):清除行列(python)
- 程序员面试金典第一章:数组与字符串(7)清除行列
- [程序员面试宝典]清除行列
- 清除行列之程序员面试经典
- 清除行列(Java)
- 清除行列
- 清除行列
- 清除行列
- 清除行列
- 【Codeforces Round 273 (Div 2)B】【贪心】 Random Teams n人分m组,可形成的最小朋友数和最大朋友数
- 5.2.3、SSAS-维度-日期维度
- Summary Ranges
- linux下基于TCP协议的多线程聊天室的搭建
- Cocos2d-x之可拉伸图片
- 清除行列(程序员面试金典)
- 年末盛典-点亮你心中的CSDN 2015博客之星
- adb adb devices offline 快速解决的办法,android adb 连接失败
- log count
- EXT4文件组织 - EXT4文件系统详解2
- 5.3、SSAS-Cube
- 智能开发框架 JEECG 作者张代浩专访
- mysql设置最大连接数
- 圆角ImageView