
Java编程题:顺时针打印矩阵
初始化四个指针,分别控制当前打印的行和列的起点和终点。 进入循环,逐层打印矩阵的边框: 在每次循环后,调整指针的值,缩小矩阵范围。 继续循环,直到所有元素被打印完毕。
发布日期:2021-05-08 06:39:03
浏览次数:25
分类:精选文章
本文共 2042 字,大约阅读时间需要 6 分钟。
顺时针打印矩阵的思路是逐层打印矩阵的边框,并逐步缩小矩阵范围,直到所有元素被打印。具体步骤如下:
- 如果当前只有一行,按顺序打印该行的所有元素。
- 如果当前只有一列,按顺序打印该列的所有元素,但注意不要重复打印右上角的元素。
- 按顺序打印右边的列和下边的列。
以下是具体的实现代码:
public class Printer { public int[] clockwisePrint(int[][] mat, int n, int m) { int[] result = new int[n * m]; if (mat == null) { return result; } int startX = 0; int startY = 0; int endX = n - 1; int endY = m - 1; int k = 0; while (k < n * m) { if (startX == endX) { for (int j = startY; j <= endY; j++) { result[k++] = mat[startX][j]; } break; } if (startY == endY) { for (int i = startX; i <= endX; i++) { result[k++] = mat[i][endY]; } break; } for (int j = startY; j <= endY; j++) { result[k++] = mat[startX][j]; } for (int j = endY; j >= startY; j--) { result[k++] = mat[endX][j]; } for (int i = startX; i <= endX; i++) { result[k++] = mat[i][endY]; } for (int i = endX; i >= startX; i--) { result[k++] = mat[i][endY - 1]; } if (startX != endX && startY != endY) { startX++; startY++; endX--; endY--; } } return result; }}
代码解释:
初始化变量:创建一个结果数组result
,用于存储打印后的顺序。检查输入矩阵是否为null
,如果是,直接返回空数组。
循环处理:使用while
循环,循环条件是k
小于矩阵的元素总数(n * m
)。每次循环处理一层边框。
处理单行情况:如果当前行是最后一行(startX == endX
),按顺序打印该行的所有元素,并跳出循环。
处理单列情况:如果当前列是最后一列(startY == endY
),按顺序打印该列的所有元素,但注意避免重复打印右上角的元素。
打印边框:
- 从左到右打印当前行的所有元素。
- 从右到左打印下一行的所有元素。
- 从上到下打印右边的所有列元素,注意避免重复打印右上角的元素。
- 从右到左打印下边的所有列元素。
调整范围:每次循环后,调整startX
、startY
、endX
和endY
的值,逐步缩小矩阵范围。
退出条件:当所有元素被打印完毕后,k
会达到n * m
,循环结束,返回结果数组。
通过这种方法,可以实现对矩阵元素的顺时针打印,确保每个元素按照指定的顺序被访问和记录。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月27日 17时04分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(五)java多线程之Lock类
2025-03-30
asp.net MVC 强类型视图表单Ajax提交的注意事项
2025-03-30
canvas设置文字阴影
2025-03-31
Centos 5.3 ADSL拨号组建中小型企业网络
2025-03-31
Centos 5.8 安装后不能使用ifconfig
2025-03-31
Centos 6 & 7 LVM 逻辑盘卷管理
2025-03-31
CentOS 6 时间,时区,设置修改及时间同步
2025-03-31
Centos 6.3 64bit安装KVM总结
2025-03-31
CentOS 6.4 yum安装chrome
2025-03-31
CentOS 6.4下编译安装MySQL 5.6.14
2025-03-31
Centos 6.4搭建网络源
2025-03-31
CentOS 6.5 Zabbix-server安装
2025-03-31
CentOS 6.5 伪分布式 安装 hadoop 2.6.0
2025-03-31
CentOS 6.9 yum 和源码安装htop,适用于centOS 7
2025-03-31
centos 64位 hadoop编译
2025-03-31
CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin
2025-03-31
CentOS 7更换yum源
2025-03-31
CentOS 7 安装 postgreSQL 9.4
2025-03-31
centos 7安装docker
2025-03-31