PHP 顺时针打印矩阵(螺旋矩阵)

输入一个矩阵,从外向里以顺时针的顺序依次打印出每个数字。例如:

 

123
456
789

 

 

$matrix = array();

$matrix = [[1,2,3],[4,5,6],[7,8,9]];

 

按照提议打印结果:1,2,3,6,9,8,7,4,5

可以使用转圈打印方案,即:

1、打印1,2,3

2、打印6,9

3、打印8,7

4、打印4

5、打印5

 

实现代码:

 

$matrix = [[1,2,3],[4,5,6],[7,8,9]];

function matrix($matrix){
   $row = count($matrix);//行数
   $col = count($matrix[0]);//列数
   if($row==0 || $col==0) return $matrix;//没有则返回原数组
   $result = array();//初始化数组
    $left = 0; $right = $col-1;$top = 0;$botton = $row-1;
    while($left<=$right && $top<=$botton){
        //上边左到右 123
        for($i = $left;$i<=$right;++$i){
            array_push($result,$matrix[$top][$i]);
        }
        //右边上到下 69
        for($i = $top + 1 ;$i <=$botton; ++$i){
            array_push($result,$matrix[$i][$right]);
        }
        //底部右到左 行数不为0
        if($top != $botton){
            //列数-1-1 =个数,倒序把元素塞进数组 87
            for($i =$right-1;$i>=$left ;--$i){
                array_push($result,$matrix[$botton][$i]);
            }
        }
        //左边从下到上 列数不为0
        if($right != $left){
            //行数-1-1 =个数,把元素塞进数组
            for($i = $botton-1;$i>$top;--$i){
                array_push($result,$matrix[$i][$left]);
            }
        }
        //起点坐标+1,列数-1,行数-1
        $left++;$right--;$top++;$botton--;
    }
    return $result;
}
$res=matrix($matrix);
echo '<pre>';
print_r( $res);
exit;

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值