zoukankan      html  css  js  c++  java
  • [PHP] 算法-顺时针打印矩阵的PHP实现

    1.行数和列数取出来row,col,圈数就是 (较小值-1)/2+1
    2.外层循环控制圈数,内层四个for循环,i
    3.第一个for循环,从左到右,j=i;j<col-i;j++;j<; arr[i][j]
    4.第二个for循环,从上到下,k=i+1;k<row-i;k++; arr[k][col-1-i]
    5.第三个循环,从右到左,m=col-2-i;m>=i&&row-1-i!=i;m--   arr[row-1-i][m]//row-1-i!=i单行的时候只打印一次
    6.第四个循环,从下到上,n=row-2-i;n>=i&&col-1-i!=i;n--  arr[n][i]
    <?php
    $arr=array();
    $flag=0;
    for($i=0;$i<2;$i++){
            $flag=$i*2;
            for($j=0;$j<2;$j++){
                    $flag++;
                    $arr[$i][]=$flag;
            }   
    }
    var_dump($arr);
    //顺时针打印矩阵
    function printMatrix($arr){
            $res=array();
            $row=count($arr);
            $col=count($arr[0]);
            $circle=intval((($row>$col ? $col : $row)-1)/2+1);
            for($i=0;$i<$circle;$i++){
                    //转圈开始
                    //从左到右
                    for($j=$i;$j<=$col-1;$j++){
                            $t=$arr[$i][$j];
                            if(in_array($t,$res)) continue;
                            $res[]=$t;
                    }   
                    //从上到下
                    for($k=$i+1;$k<$row-$i;$k++){
                            $t=$arr[$k][$col-$i-1];
        
                            if(in_array($t,$res)) continue;
                            $res[]=$t;
                    }   
                    //从右到左
                    for($m=$col-$i-2;$m>=$i;$m--){
                            $t=$arr[$row-$i-1][$m];
                            if(in_array($t,$res)) continue;
                            $res[]=$t;
                    }   
                    //从下到上
                    for($n=$row-$i-2;$n>$i;$n--){
                            $t=$arr[$n][$i];
                            if(in_array($t,$res)) continue;
                            $res[]=$t;
                    }   
            }   
            return $res;
    }
    $res=printMatrix($arr);
  • 相关阅读:
    (1)李宏毅深度学习-----机器学习简介
    Git命令之不得不知的git stash暂存命令
    Http2升级方案调研
    神奇的 SQL 之别样的写法 → 行行比较
    熔断机制
    限流算法
    状态机
    布隆过滤器
    负载均衡算法
    K8S Ingress
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9872264.html
Copyright © 2011-2022 走看看