[PHP] 算法-顺时针打印矩阵的PHP实现
2023-02-18 15:41:51 时间
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);
相关文章
- 马上都2023了,但是CNS级别单细胞文章仍然是使用monocle2
- 使用Mosquitto实现MQTT客服端C语言
- mosquitto移植到ARM
- mosquitto的安装与使用
- QT下载与安装
- 虚拟基站(VRS)
- liunx驱动之字符设备的注册
- 湃兔更新镜像文件的制作与烧写
- 通过busybox制作根文件系统详细过程
- 内核与设备树的编译和烧写
- UBoot的编译与烧写
- Nextcloud 使用教程
- uboot通过NFS挂载ubuntu根文件系统
- 如何在博客园编写博文章
- [NetWork] 数据封装与解封装流程
- 深度学习-LeNet(第一个卷积神经网络)
- Java跨域-Redirect的跨域问题解决
- 十年前,AlexNet就预定了今天的NeurIPS 2022时间检验奖
- 无需新型token mixer就能SOTA:MetaFormer视觉基线模型开源,刷新ImageNet记录
- 推荐一款神仙颜值的Redis客户端工具