LeetCode题目-73

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2025-01-06 10:03:50

简介 LeetCode题目-73


✏基础刷题之(73. Set Matrix Zeroes)


.

✏描述

给定一个二维数组,只要列或者行中存在0,那么这个行列上的所有数都是0.


✏题目实例


✏题目分析

这整体思路就是先扫描第一行第一列如果有0的行列,各自标识一下。再扫描其后的数组,如果存在0,则将对应的第一行第一列设置成0,接着再判断除去第一行第一列之后的数组,如果第一行或者第一列有一个是0,那么直接设置它的值是0,最后通过标识把第一行第一列的值更新是否为0。有点绕,具体看代码

✏最终实现代码

/**
     * @param Integer[][] $matrix
     * @return NULL
     */
    function setZeroes(&$matrix) {
        if(empty($matrix) || empty($matrix[0])) return;
        $m=count($matrix);
        $n=count($matrix[0]);
        $row=false;
        $col=false;
        for($i=0;$i<$m;$i++){
            if($matrix[$i][0]==0) $col=true;
        }
        for($i=0;$i<$n;$i++){
            if($matrix[0][$i]==0) $row=true;
        }
        
        for($i=1;$i<$m;$i++){
            for($j=1;$j<$n;$j++){
                if($matrix[$i][$j]==0){
                    $matrix[0][$j]=0;
                    $matrix[$i][0]=0;
                }
            }
        }
        
        for($i=1;$i<$m;$i++){
            for($j=1;$j<$n;$j++){
                if($matrix[$i][0]==0 || $matrix[0][$j]==0){
                    $matrix[$i][$j]=0;
                }
            }
        }
        
        if($row){
            for($i=0;$i<$n;$i++) $matrix[0][$i]=0;
        }
        if($col){
            for($i=0;$i<$m;$i++) $matrix[$i][0]=0;
        }
        return $matrix;
    }

转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云