尚未崩坏 发表于 2025-3-21 08:30:54

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]
查看完整版本: LeetCode -Hot100 - 73. 矩阵置零