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("]");
    }
}
相关推荐
WanderInk几秒前
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
java·后端·架构
勤劳的进取家3 分钟前
贪心算法的使用条件
数据结构·python·算法·贪心算法·排序算法·动态规划
nlog3n8 分钟前
Java访问者模式详解
java·开发语言·访问者模式
·云扬·12 分钟前
Java并发编程高频面试题
java·jvm·面试
十七算法实验室35 分钟前
Matlab实现鼠群优化算法优化随机森林算法模型 (ROS-RF)(附源码)
开发语言·算法·决策树·随机森林·机器学习·支持向量机·matlab
南玖yy37 分钟前
数据结构C语言练习(设计循环队列)
java·c语言·数据结构
烁34739 分钟前
每日一题(小白)字符串娱乐篇16
java·开发语言·算法·娱乐·暴力
butiehua020240 分钟前
Go语言常用算法实现
数据结构·算法·golang·排序算法
luckycoding1 小时前
1631. 最小体力消耗路径
数据结构·算法·leetcode
.YY001.1 小时前
数据结构第一轮复习--第七章查找(包含课程代码)
数据结构·算法