题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思路:
拿到数组取出第一行,然后逆时针反转数组,循环多次,直到数组为空
function printMatrix($matrix)
{
while (!empty($matrix)) {
$len = count($matrix[0]);
for ($j = 0;$j<$len;$j++) {
$new[] = $matrix[0][$j];
}
array_shift($matrix);
$matrix = reverse($matrix, count($matrix)-1, $len-1);
}
return $new;
}
function reverse($arr,$i,$j) {
$new_arr = array();
for ($jj=0;$jj<=$j;$jj++) {
for ($ii=0; $ii<=$i;$ii++) {
$new_arr[$jj][$ii] = $arr[$ii][$j-$jj];
}
}
return $new_arr;
}