Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.A simple improvement uses O(m + n) space, but still not the best solution.Could you devise a constant space solution? 分析:将数组中为0元素所在的行和列都置0。首先找到这些元素,分别开两个数组记录所在行和列,将这些行和列分别置0
运行时间:87ms
1 class Solution { 2 public: 3 void setZeroes(vector>& matrix) { 4 int row = matrix.size(); 5 int col = matrix[0].size(); 6 7 vector vRow(row, 0); 8 vector vCol(col, 0); 9 for(int i = 0; i < row; i++){10 for(int j = 0; j < col; j++){11 if(matrix[i][j] == 0){12 vRow[i] = 1;13 vCol[j] = 1;14 }15 }16 }17 for(int i = 0; i < row; i++){18 if(vRow[i] == 1){19 for(int j = 0; j < col; j++) matrix[i][j] = 0;20 }21 }22 for(int j = 0; j < col; j++){23 if(vCol[j] == 1){24 for(int i = 0; i < row; i++) matrix[i][j] = 0;25 }26 }27 return;28 }29 };