剑指 Offer 29. 顺时针打印矩阵

思路:从左往右在往下在往左在往上循环,循环一次后从下一个起点再次循环输出,直到所有的元素都已访问function spiralOrder($matrix) {

    $start_m = 0;

    $start_n = 0;

    $list = [[0,1],[1,0],[0,-1],[-1,0]];

    $res = [];

    $m = count($matrix);

    $n = count($matrix[0]);

    //一层一层循环,当起点已经被访问则退出循环

    while($matrix[$start_m][$start_n] !== false){

        array_push($res,$matrix[$start_m][$start_n]);

        $matrix[$start_m][$start_n] = false;

        //每一次从左往右再往下再往左再往上,每访问一个元素标记此元素已访问。

        foreach($list as $v){

            while($matrix[$start_m+$v[0]][$start_n+$v[1]] !== false && $start_m+$v[0] >=0 && $start_m+$v[0] < $m && $start_n+$v[1] >=0 && $start_n+$v[1] < $n){

                array_push($res,$matrix[$start_m+$v[0]][$start_n+$v[1]]);

                $matrix[$start_m+$v[0]][$start_n+$v[1]] = false;

                $start_m = $start_m+$v[0];

                $start_n = $start_n+$v[1];

            }

}

        $start_n = $start_n+1;

    }

    return $res;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容