LeetCode讲解篇之面试题 01.08. 零矩阵

文章目录

题目描述

题解思路

遍历矩阵,若当前元素为零,则将该行和该列的第一个元素置零

遍历第一行,若当前元素为零,则将当前列置零

遍历第一列,若当前元素为零,则将当前行置零

题解代码

go 复制代码
func setZeroes(matrix [][]int)  {
    m, n := len(matrix) - 1, len(matrix[0]) - 1
    for i := m; i >= 0; i-- {
        if matrix[i][0] == 0 {
            defer func() {
                for i := m; i >= 0; i-- {
                    matrix[i][0] = 0
                } 
            }()
            break
        }
    }
    for i := n; i >= 0; i-- {
        if matrix[0][i] == 0 {
            defer func() {
                for i := n; i >= 0; i-- {
                    matrix[0][i] = 0
                }
            }()
            break
        }
    }

    for i := m; i > 0; i-- {
        for j := n; j > 0; j-- {
            if matrix[i][j] == 0 {
                matrix[i][0] = 0
                matrix[0][j] = 0
            }
        }
    }

    for i := m; i > 0; i-- {
       if  matrix[i][0] == 0 {
           for j := n; j > 0; j-- {
               matrix[i][j] = 0
           }
       }
    }

    for i := n; i > 0; i-- {
        if matrix[0][i] == 0 {
            for j := m; j > 0; j-- {
                matrix[j][i] = 0
            }
        }
    }
}
相关推荐
无心水11 分钟前
【任务调度:框架】10、2026最新!分布式任务调度选型决策树:再也不纠结选哪个
人工智能·分布式·算法·决策树·机器学习·架构·2025博客之星
我头发还没掉光~21 分钟前
【C++写详细总结①】从for循环到算法初步
数据结构·c++·算法
【数据删除】34837 分钟前
计算机复试学习笔记 Day41
笔记·学习·算法
上海锟联科技37 分钟前
什么是DAS分布式光纤声波传感系统?原理与应用解析
数据结构·分布式·算法·分布式光纤传感
篮l球场44 分钟前
LRU 缓存
算法·leetcode
blackicexs1 小时前
第八周第五天
数据结构·c++·算法
whycthe1 小时前
c++二叉树详解
数据结构·c++·算法
郝学胜-神的一滴1 小时前
循环队列深度剖析:从算法原理到C++实现全解析
开发语言·数据结构·c++·算法·leetcode
Via_Neo1 小时前
接雨水问题 + 输入优化
java·开发语言·算法
plus4s1 小时前
3月13日(进阶5)
算法