Leetcode基础刷题之PHP解析(59. Spiral Matrix II)
2019-7-31 星期三 开始吧
上一题链接Leetcode基础刷题之PHP解析(54. Spiral Matrix)
题目描述
这道题是54的第二个版本,其实也就是类似相反的操作,给定一个整数,从1到n的平方输出旋转式的顺序。
题目分析
搞清楚返回的顺序,对应每一个点进行填充。
代码实现
/** * @param Integer $n * @return Integer[][] */ function generateMatrix($n) { $up=0; $down=$n-1; $left=0; $right=$n-1; $start=1; $res=[]; while($left<=$right){ for($i=$left;$i<=$right;++$i){ $res[$up][$i]=$start++; } $up++; for($i=$up;$i<=$down;++$i){ $res[$i][$right]=$start++; } $right--; for($i=$right;$i>=$left;--$i){ $res[$down][$i]=$start++; } $down--; for($i=$down;$i>=$up;--$i){ $res[$i][$left]=$start++; } $left++; } foreach($res as $key=>$val){ ksort($res[$key]); } return $res; }
可以看到最后我还给每一个一维数组进行ksort排序,这是为什么。打印一下返回值。看一下没排序之前的。
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[1]=>
array(3) {
[2]=>
int(4)
[0]=>
int(8)
[1]=>
int(9)
}
[2]=>
array(3) {
[2]=>
int(5)
[1]=>
int(6)
[0]=>
int(7)
}
}
正确的结果
[[1,2,3],[8,9,4],[7,6,5]]
乍一看没问题啊,下标都对的上啊,但是当我提交的时候
很奇怪为什么不是按照下标顺序开始排??所以我多出了这一步,难道是我脑子短路了?????????
Github整理地址:https://github.com/wuqinqiang/leetcode-php
No Comments