顺时针打印矩阵 (JAVA实现)
来源:互联网 发布:电子地图数据规范 编辑:程序博客网 时间:2024/05/27 09:45
问题:
给定一个矩阵,从外向内顺时针打印矩阵中的每一个数字。
例如:给定矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出应该为:{1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10}
分析:
问题的本质其实就是打印一个方形。每一个方形代表矩阵的每一层。但是,打印一个方形,我们必须要知道它的两个对角顶点的位置。有了对角顶点的位置,打印一个方形并不困难了。
注意:对于一个矩阵,它的长宽可能会不一样,所以,我们需要判断处理。
代码:
public void printCircle(int[][] matrix, int startX, int startY, int endX, int endY) {// only one column leftif (startY == endY) {for (int i = startX; i <= endX; i++ ) {System.out.println(matrix[i][endY]);}return;}// only one row leftif (startX == endX) {for (int i = startY; i <= endY; i++ ) {System.out.println(matrix[startX][i]);}return;}for (int i = startY; i < endY; i++ ) {System.out.println(matrix[startX][i]);}for (int i = startX; i < endX; i++ ) {System.out.println(matrix[i][endY]);}for (int i = endY; i > startY; i-- ) {System.out.println(matrix[endX][i]);}for (int i = endX; i > startX; i-- ) {System.out.println(matrix[i][startY]);}}public void printMatrix(int[][] matrix) {if (matrix == null) {return;}int startX = 0;int startY = 0;int endY = matrix[0].length - 1;int endX = matrix.length - 1;while ((startX <= endX) && (startY <= endY)) {printCircle(matrix, startX, startY, endX, endY);startX++;startY++;endX--;endY--;}}参考:http://blog.csdn.net/beiyeqingteng
- 顺时针打印矩阵 (JAVA实现)
- 顺时针打印矩阵 (JAVA实现)
- 顺时针打印矩阵(Java实现)
- 顺时针打印矩阵java实现
- JAVA实现顺时针打印矩阵问题(《剑指offer》)
- Java 顺时针打印矩阵
- java 顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵(JAVA)
- java顺时针、逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- 顺时针打印java实现
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 剑指Offer面试题20:顺时针打印矩阵 Java实现
- 顺时针打印矩阵 按圈打印 java
- 数据结构(顺时针打印矩阵)
- 顺时针打印矩阵(数组)
- LeetCode-54. Spiral Matrix (JAVA)(顺时针打印矩阵)
- PG2 BYPASS源码阅读 学习x64解密定时器、特征码定位
- poj-3159很神奇的一题-差分约束+spfa
- linux ntpd
- 综合整理了自己收藏的php几类常用函数
- IOS视频压缩
- 顺时针打印矩阵 (JAVA实现)
- ORA-00257: 归档程序错误。在释放之前仅限于内部连接
- 高尔夫球场难度Course rating 和斜度slope rating
- Git学习笔记4 找出最懒的程序员
- pg3 bypass源码阅读 —— 学习x64内核hook跳板技术
- OGRE SampleBrowser框架解析
- VS2008 ACtivex 制作CAB带 Vcredist_x86.exe 方案
- 安装SugarCRM 6.5版本
- 《Red5 用户参考手册》之十四:Red5 核心技术第七章 管理