【Leetcode】之Set Matrix Zeroes
2016-06-14 10:48
477 查看
一.问题描述
Given a m x n matrix,if an element is 0, set its entire row and column to 0. Do it in place.
二.我的解题思路
对于这道题,我的思路是用空间换时间。首先创建两个数组,int row_idx[row_num]={0}; int line_idx[line_num]={0],然后遍历整个矩阵,记录下需要置0的行号和列号。比如matrix[1][2]=0,那么就说明第1行和第二列需要置0.然后我就设置row_idx[1]=1;line_idx[2]=1.在遍历完一次整个矩阵之后,重新再遍历一次矩阵。对每个元素matrix[i][j],判断row_idx[i] line_idx[j]是否是1,如果是,那么就置0.这种做法的时间复杂度是O(M*N)。测试通过的程序如下:
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int row_num = matrix.size();
if(row_num==0) return;
int line_num=matrix[0].size();
int * row_idx = new int[row_num]();
int * line_idx= new int[line_num]();
for(int i=0;i<row_num;i++){
for(int j=0;j<line_num;j++){
if(matrix[i][j]==0){
row_idx[i]=1;
line_idx[j]=1;
}
}
}
for(int i=0;i<row_num;i++){
for(int j=0;j<line_num;j++){
if(row_idx[i]==1 || line_idx[j]==1)
matrix[i][j]=0;
}
}
}
};
相关文章推荐
- 关于Unity5.3UGUI图集的使用方法
- TextView的ellipsize属性
- 抽象类和接口分别应该在什么时候使用
- Python学习笔记 —— 文件操作
- ubuntu16.04 安装 eclipse
- win7 远程桌面无法连接解决办法
- 关于安卓的20个小知识
- 安装MySQL-python时发生错误:error: command 'gcc' failed with exit status 1
- 敏捷BI真的是颠覆性的BI创新吗?
- keySet 与entrySet 遍历HashMap性能差别
- python 内建函数setattr() getattr()
- System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
- 中国天气网-天气预报接口api
- 一个人奋斗真的很累很孤单
- 有感而发
- 搭建rabbitmq的docker集群
- shell date命令使用
- Android中的Drawable资源——Bitmap
- C#中CookieContainer获取里面cookie值异常:InvokeMember("m_domainTable") FieldAccessException
- c++封装编写线程池