力扣73——矩阵置零
准备开一个力扣解题的系列,督促自己每天刷题,就从今天开始。 原题 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 示例 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] ] 进阶: 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个常数空间的解决方案吗? 原题url:https://leetcode-cn.com/problems/set-matrix-zeroes/ 解法 其实题目本身不难,只要判断出哪些数字是0,将其所在行和列记录一下, 最终全部置0即可,关键在于你所需要消耗的空间是多少。 用一个数字 首先我想到的是用一个数字进行表示,用二进制表示,一共 m n 位,其中前 m 位表示行,后 n 位表示列,矩阵中哪个数字为0,则其行列所在位的数字为1,也就是加上相应的二进制数。为了不重复添加,可以用 & 进行判断。来看看代码是什么: class