73、矩阵置零 点击此处返回总目录 【题目】
【分析】 O(mn)的方案,实在想不出来。。。 O(m+n)的方案:可以使用HashSet来做。分别用两个HashSet来存放数组中0元素的行坐标和列坐标。然后遍历HashSet,把元素置零。 本题要求原地算法,即使用常数空间。可以使用某一行和某一列来代替上面方案中的HashSet。具体使用哪一行那一列呢?有两种思路。 思路一:使用第一行、第一列来存储。 step1:首先记录一下第一行、第一列有没有0元素。 step2:把其他位置的0元素的行号、列号记录到第一行和第一列上。 step3:把除第一行第一列外的该置0的行和列置零。 step4:第一行第一列需要置零的话就置零。 思路二:首先找到第一个0元素,使用它所在的行和列来存储。
第一种思路没有第二种思路好。
【代码】
【运行结果】
|