73-Set-Matrix-Zeroes
0x1 题目详情
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
测试用例:
示例 2: 输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
0x2 解题思路
思路一: 这道题的难点在于原地修改。我最开始的想法时首先遍历一遍数组,把行中有0的行数记录下来,把列中有0的列数记录下来,然后再根据记录下来的行数与列数对矩阵进行置零操作。当然这并不满足题意。
思路二:
这种方式也是很巧妙奥,使用数组本身来保存哪一行或者哪一列的信息,最后统一置0。
首先判断首行首列是否包含0,因为后面含0的行列数据就需要保存在首行或首列中。使用两个变量作为标记
判断每个元素是否为0,如果为零,则将当前行的第一个元素置为0,将当前列的第一个元素置0,直到遍历完整个数组
进行置零操作,遍历每一个元素,如果当前行首个元素为0,则将当前行所有元素置0,如果当前列首个元素为0,则将当前列所有元素置0
根据先前获得标记变量来决定是否要把首行、首列置0
0x3 代码实现
思路1:
思路2:
0x4 课后总结
emmm,智力题。
Last updated
Was this helpful?