Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
二维数组中为0的元素,就把该元素所在的行和列都置为0
思路:
开个结构数组p,用p记录该二维数组中为0的点的i,j脚标。
然后分别遍历p中的行脚标,和列脚标,来设置相应的行和列设为0即可。
用一个bool数组来去除重复行脚标和列脚标,提高效率。
代码:
struct point{ int i; int j;};const int MAXNUM=1000;class Solution {public: void setZeroes(vector> &matrix) { vector p; p.resize(MAXNUM); int p_size=0; int m=matrix.size();//行 int n=matrix[0].size();//列 for (size_t i=0;i has_been_set_row(MAXNUM,false); for (size_t loc=0;loc has_been_set_col(MAXNUM,false); for (size_t loc=0;loc