LeetCode -Hot100 - 73. 矩阵置零
媒介本专栏重要通过“LeetCode 热题100”,来捡起本身本科阶段的算法知识与本领。语言重要使用c++/java。假如同样正在练习LeetCode 热题100的朋侪欢迎关注或订阅本专栏。有疑问欢迎留言交换~
标题描述
标题链接
给定一个 m x n 的矩阵,假如一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
https://i-blog.csdnimg.cn/direct/fca4d9bf1c9c4ec9980f78e389cbe412.png#pic_center
思绪
最开始我不知道什么是“原地算法”。gpt给的答复是:原地算法(In-place algorithm)是指在实行算法时不需要额外的存储空间,大概只需要常数级别的额外存储空间的算法。换句话说,算法的输入数据被直接修改以产生输出效果,而不需要创建额外的数据结构来存储输出效果或中心效果。
假如只是不用额外的数组来存储二维数组,不难。只要发现一个0然后对当前的数组的行列赋值0就好,但需要注意不要把后面没有开始判定的数字给赋值0了。既然怕前面的赋值操纵影响后面的数组,其实完全可以用数组记载下来哪些行和列要归0。然后末了同一来赋值0就好。
Java代码如下:
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix.length;
boolean[] row = new boolean;
boolean[] col = new boolean;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
//发现0
if (matrix == 0) {
row = col = true;//只需要记录下来这些row 和 col为true
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (row == true || col == true) {
matrix = 0;
}
}
}
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]