矩阵置零解题

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

示例 1:

复制代码
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

复制代码
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

解题思路

方法一:创建m*n的数据记录哪一个位置是0,空间复杂度O(m*n)

方法二:找到为0的位置,将对应的第一列/第一行的值设置为0,第一行会有问题,设置一个标记,若第一行出现0,将标记设置为true,在转化

解题

按照解题思路写代码即可,代码附上

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        boolean flag = false;    //标记
        int row = matrix.length;
        int col = matrix[0].length;
        for (int i = 0; i < row; i++) {
            if (matrix[i][0] == 0) flag = true;
            for (int j = 1; j < col; j++) {
                if (matrix[i][j] == 0) {
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        //将第一列和第一行值为0的整个设置为0
        for (int i = row - 1; i >= 0; i--) {
            for (int j = col - 1; j >= 1; j--) {
                if (matrix[i][0] == 0 || matrix[0][j] == 0) {
                    matrix[i][j] = 0;
                }
            }
            if (flag) matrix[i][0] = 0;
        }
    }
}
相关推荐
郝学胜-神的一滴36 分钟前
计算机图形中的法线矩阵:深入理解与应用
开发语言·程序人生·线性代数·算法·机器学习·矩阵·个人开发
还是码字踏实2 小时前
基础数据结构之数组的矩阵遍历:螺旋矩阵(LeetCode 54 中等题)
数据结构·leetcode·矩阵·螺旋矩阵
西西弗Sisyphus3 小时前
线性代数 - 奇异值分解(SVD Singular Value Decomposition)- 计算顺序 旋转→拉伸→旋转
线性代数·矩阵·奇异值分解·矩阵求逆
唯道行3 小时前
计算机图形学·9 几何学
人工智能·线性代数·计算机视觉·矩阵·几何学·计算机图形学
粉色挖掘机3 小时前
矩阵在密码学的应用——希尔密码详解
线性代数·算法·机器学习·密码学
熬了夜的程序员20 小时前
【LeetCode】101. 对称二叉树
算法·leetcode·链表·职场和发展·矩阵
西西弗Sisyphus20 小时前
线性代数 - 正交矩阵
线性代数·矩阵·线性方程组·正交矩阵·lu分解
qiao若huan喜1 天前
7、webgl 基本概念 + 前置数学知识点(向量 + 矩阵)
线性代数·矩阵·webgl
haogexiaole1 天前
余弦相似度、矩阵分解、深度学习物品的复杂、非线性特征
深度学习·线性代数·矩阵
望十五江洋2 天前
泊松分布的参数可加性
线性代数·机器学习·概率论