Leetcode基础刷题之PHP解析( 73. Set Matrix Zeroes)

Leetcode基础刷题之PHP解析( 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;    }

Leetcode基础刷题之PHP解析( 73. Set Matrix Zeroes)

未经允许不得转载:PHP100中文网 - 中国第一档PHP资源分享门户 » Leetcode基础刷题之PHP解析( 73. Set Matrix Zeroes)

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏