顺时针打印矩阵
2017-08-19 00:40
246 查看
1.题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下矩阵:
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.
2.code(java1.7版本)
3.题目分析
画图出来看,顺时针一层一层打印即可,注意每一层的访问位置的开始顶点和结束顶点即可。
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下矩阵:
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.
2.code(java1.7版本)
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> ans=new ArrayList<Integer>(); int n=matrix.length; if(n==0)return ans; int m=matrix[0].length; if(m==0)return ans; int layer=(Math.min(n,m)-1)/2+1;//这里是层数 for(int i=0;i<layer;i++){ for(int k=i;k<m-i;k++)ans.add(matrix[i][k]);//从左上到右上 for(int k=i+1;k<n-i;k++)ans.add(matrix[k][m-i-1]);//从右上到右下 for(int k=m-i-2;k>=i&&(n-i-1!=i);k--)ans.add(matrix[n-i-1][k]);//从右下到左下 for(int k=n-i-2;k>i&&(m-i-1!=i);k--)ans.add(matrix[k][i]);//从左下到左上 } return ans; } }
3.题目分析
画图出来看,顺时针一层一层打印即可,注意每一层的访问位置的开始顶点和结束顶点即可。
相关文章推荐
- 剑指Offer20:顺时针打印矩阵
- 剑指offer_数组---顺时针打印矩阵
- [九度][何海涛] 顺时针打印矩阵
- leetcode-54 Spiral Matrix 顺时针打印矩阵(《剑指offer》面试题20)
- 【牛客】顺时针打印矩阵
- 剑指offer——面试题20:顺时针打印矩阵
- 剑指offer 面试题20 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer系列-T20顺时针打印矩阵
- 1391:顺时针打印矩阵 @jobdu
- 顺时针打印矩阵
- 程序员面试题精选100题(51)-顺时针打印矩阵
- 剑指Offer面试题20(Java版):顺时针打印矩阵
- 顺时针旋转打印n阶矩阵(内测第0届第4题)
- 顺时针打印矩阵
- 138 顺时针打印矩阵
- 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
- 顺时针打印矩阵
- [Jobdu] 题目1391:顺时针打印矩阵