2019-7-16 星期二 开始吧
上 一 题 链 接 Leetcode基础刷题之PHP解析(55. Jump Game)
题 目 描 述
给定一个二维数组,只要列或者行中存在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; }
Github整理地址 : https://github.com/wuqinqiang/leetcode-php
我来评几句
登录后评论已发表评论数()