顺时针打印矩阵
来源:互联网 发布:win8网络连接在哪里 编辑:程序博客网 时间:2024/06/06 06:19
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix==null||matrix.length<=0||matrix[0].length<=0){ return null; } int row=matrix.length; int column=matrix[0].length; ArrayList<Integer> list=new ArrayList<Integer>(); int count=row>column?(column+1)/2:(row+1)/2; for(int i=0;i<count;i++){ int start1=i,end1=column-i-1; //打印横排 for(int j=start1;j<=end1;j++){ list.add(matrix[start1][j]); } //打印右列 int line=column-i-1; int start2=i+1,end2=row-i-1; if(start2<=end2){ for(int j=start2;j<=end2;j++){ list.add(matrix[j][line]); } } //打印下横排 int horiz=row-i-1; int start3=column-i-1-1,end3=i; if(start3>=end3&&horiz!=i){ for(int j=start3;j>=end3;j--){ list.add(matrix[horiz][j]); } } //打印左竖排 line=i; int start4=row-i-1-1,end4=i+1; if(start4>=end4&&line!=(column-i-1)){ for(int j=start4;j>=end4;j--){ list.add(matrix[j][line]); } } } return list; }}
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- JPA
- IOS 事件传递说明
- 2016/2/13 Head First Java 第7节第二小结 多态
- 2016年计划
- ubuntu 安装 apktool
- 顺时针打印矩阵
- jsp页面更改编码为utf-8
- 匈牙利算法模板
- 智慧北京(1)——闪屏与引导界面
- Java基础笔记汇总
- C语言 gets()和scanf()函数的区别
- 在外国人眼中为什么功夫文化在中国如此流行
- c语言的jmp_buf函数
- Bug错题集-20160213