您的位置:首页 > 其它

【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;
}
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: