zoukankan      html  css  js  c++  java
  • 面试题29:顺时针打印矩阵

    NowCoder

    <?php
    header("content-type:text/html;charset=utf-8");
    /*
     * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. P161
     */
    
    function printMatrix($matrix)
    {
        $leftRow = 0;
        $leftCol = 0;
        $rightRow = count($matrix) - 1;
        $rightCol = count($matrix[0]) - 1;
        if($matrix == null){
            return null;
        }
    
        $arr = [];
        $array = [];
        while ($leftRow <= $rightRow && $leftCol <= $rightCol){
            $arr[] = printEdge($matrix,$leftRow++,$leftCol++,$rightRow--,$rightCol--); //得到一个二维数组,注意数组的添加方式
        }
        foreach ($arr as $value){
            foreach ($value as $val){
                $array[] = $val;
            }
    
        }
        return $array;
    }
    
    function printEdge($matrix,$leftRow,$leftCol,$rightRow,$rightCol){
        $arr = [];
        //注意分支if-elseif-else的添加,它们三个有重叠
        if($leftRow == $rightRow){         //如果只有一行,必定是从左至右打印
            for($i = $leftCol; $i<=$rightCol;$i ++ ){
             //   echo $matrix[$leftRow][$i]." ";
            //    echo "=====";
                $arr[] = $matrix[$leftRow][$i];
            }
        }
        elseif($leftCol == $rightCol){  //如果只有一列,必定是从上至下打印
            for($i = $leftRow; $i<=$rightRow;$i ++ ){
              //  echo $matrix[$i][$leftCol]." ";
                $arr[] = $matrix[$i][$leftCol];
            }
        }
        else{
            for($i = $leftCol;$i < $rightCol;$i++){
                //   echo $matrix[$leftRow][$i]." ";
                $arr[] = $matrix[$leftRow][$i];
            }
            for($i = $leftRow;$i < $rightRow;$i++){
                //    echo $matrix[$i][$rightCol]." ";
    
                $arr[] = $matrix[$i][$rightCol];
            }
            for($i = $rightCol;$i > $leftCol;$i--){
                //    echo $matrix[$rightRow][$i]." ";
                $arr[] = $matrix[$rightRow][$i];
            }
            for($i = $rightRow;$i > $leftRow;$i--){
                //  echo $matrix[$i][$leftCol]." ";
                $arr[] = $matrix[$i][$leftCol];
            }
        }
    
        return $arr;
    }
    
    //$matrix = array(array(1,2,3,4),array(5,6,7,8),array(9,10,11,12),array(13,14,15,16),array(17,18,19,20));
    $matrix = [[1,2,3,4,5]];
    print_r(printMatrix($matrix));
  • 相关阅读:
    spark 机器学习 随机森林 实现(二)
    spark 机器学习 随机森林 原理(一)
    spark 机器学习 决策树 原理(一)
    spark 机器学习 朴素贝叶斯 实现(二)
    ★★★★★★★★★★★★★博客园的文章目录★★★★★★★★★★★★
    celery 的使用
    rabbitmq 参考手册
    rabbitmq 的简单使用
    django 常用组件
    celery 参考资料
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10198340.html
Copyright © 2011-2022 走看看