73. 矩阵置零 --力扣 --JAVA

文章描述了一种原地算法,用于解决给定矩阵中找到并置零0元素的问题,同时保持其他元素不变。算法通过查找0元素的位置,标记行和列,然后填充0并清除相关列来实现。

题目

给定一个 m x n 的矩阵,如果一个元素为 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

解题思路

  1. 通过二层循环找出元素为0所在的行和列;
  2. 设置标志位记录当前行是否存在元素为0的,设置列表存储列为0的列;
  3. 在内循环结束后对存在元素为0的行,填充为0;
  4. 遍历列表,将列置为0;

代码展示

class Solution {
    public void setZeroes(int[][] matrix) {
        Set<Integer> row = new HashSet<>();
        for (int i = 0; i < matrix.length; i++){
            boolean status = false;
            for (int j = 0; j < matrix[i].length; j++){
                if(matrix[i][j] == 0){
                    status = true;
                    row.add(j);
                }
            }
            if(status){
                Arrays.fill(matrix[i], 0);
            }
        }
        for (int num : row){
            for (int i = 0; i < matrix.length; i++){
                matrix[i][num] = 0;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值