牛客网(剑指offer) 第十九题 顺时针打印矩阵

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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;
     
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值