题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
<?php
function printMatrix($matrix)
{
$left = 0;
$right = count($matrix[0])-1;
$top = 0;
$bottom = count($matrix)-1;
$list = [];
while(($right>$left)&&($bottom>$top))
{
for ($i = $left; $i <= $right; $i++)
{
array_push($list, $matrix[$left][$i]);
}
for($i = $top+1; $i <= $bottom; $i++)
{
array_push($list, $matrix[$i][$right]);
}
for($i = $right-1; $i >= $left; $i--)
{
array_push($list, $matrix[$bottom][$i]);
}
for($i = $bottom-1; $i > $top; $i--)
{
array_push($list, $matrix[$i][$left]);
}
$left++;
$right--;
$top++;
$bottom--;
}
if($top == $bottom && $left<$right)
{
for($i = $left; $i<=$right; $i++)
{
array_push($list, $matrix[$top][$i]);
}
}
if($top<$bottom && $left == $right)
{
for($i = $top; $i<=$bottom; $i++)
{
array_push($list, $matrix[$i][$left]);
}
}
if($bottom == $top && $right == $left)
{
array_push($list, $matrix[$left][$top]);
}
return $list;
}