.
2019-07-31 吴亲库里 库里的深夜食堂
这道题是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]]
乍一看没问题啊,下标都对的上啊,但是当我提交的时候

