73. 矩阵置零(Java)

目录

题目描述:

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

输入:

matrix = [[1,1,1],[1,0,1],[1,1,1]]

输出:

\[1,0,1\],\[0,0,0\],\[1,0,1\]

代码实现:

java 复制代码
import java.util.Arrays;
//矩阵置零
public class Main{
    public static void main(String[] args) {
        //案例
        int[][] matrix = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}};
        setZeroes(matrix);//[[1, 0, 1],[0, 0, 0],[1, 0, 1]]
    }

    public static void setZeroes(int[][] matrix) {
        //行数
        int m = matrix.length;
        //列数
        int n = matrix[0].length;
        //临时数组
        int[][] temp = new int[m][n];
        //标记临时数组
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == 0) {
                    for (int k = 0; k < m; k++) {
                        //所在一列标记
                        temp[k][j] = 1;
                    }
                    for (int k = 0; k < n; k++) {
                        //所在一行标记
                        temp[i][k] = 1;
                    }
                }
            }
        }
        //根据临时数组 置零矩阵
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (temp[i][j] == 1) {
                    matrix[i][j] = 0;
                }
            }
        }
        //输出:每一行
        System.out.print("[");
        for (int i = 0; i < matrix.length; i++) {
            if (i < matrix[i].length - 1) {
                System.out.print(Arrays.toString(matrix[i]) + ",");
            } else {
                //除最后一行后面 不需要接逗号
                System.out.print(Arrays.toString(matrix[i]));
            }
        }
        System.out.print("]");
    }
}
相关推荐
华仔啊25 分钟前
主线程存了用户信息,子线程居然拿不到?ThreadLocal 背锅
java·后端
间彧36 分钟前
Spring Boot项目中,Redis 如何同时执行多条命令
java·redis
召摇1 小时前
如何避免写垃圾代码:Java篇
java·后端·代码规范
vker1 小时前
第 1 天:单例模式(Singleton Pattern)—— 创建型模式
java·设计模式
我不是混子1 小时前
什么是内存泄漏?
java
程序员小假1 小时前
我们来说说当一个线程两次调用 start() 方法会出现什么情况?
java·后端
SimonKing2 小时前
Archery:开源、一站式的数据库 SQL 审核与运维平台
java·后端·程序员
皮皮林55113 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
卡尔特斯17 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
白鲸开源17 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源