算法题目--顺时针打印矩阵
2017-06-25 19:50
309 查看
题目:
![](https://img-blog.csdn.net/20170625192640258)
例如矩阵如下:
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。
参考剑指offer上的思路:
![](https://img-blog.csdn.net/20170625194331339)
打印的顺序如上图所示。
循环结束的条件。
![](https://img-blog.csdn.net/20170625194448431)
循环结束的条件为:
while(cols>start*2&&rows>start*2){
...................................
}
打印的步骤:
![](https://img-blog.csdn.net/20170625194736258)
![](https://img-blog.csdn.net/20170625194755971)
实现算法:
例如矩阵如下:
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。
参考剑指offer上的思路:
打印的顺序如上图所示。
循环结束的条件。
循环结束的条件为:
while(cols>start*2&&rows>start*2){
...................................
}
打印的步骤:
实现算法:
package test; import java.util.ArrayList; public class days3 { public static void main(String[] args) { //int[][] m={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int[][] m={{1},{2},{3},{4}}; ArrayList<Integer> s=new ArrayList<Integer>(); s=printMatrix(m); for(int i=0;i<s.size();i++){ System.out.print(s.get(i)+" "); } } public static ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> s1=new ArrayList<Integer>(); int rows=matrix.length; int cols=matrix[0].length; if(matrix==null||rows==0||cols==0){ return s1; } int start=0; while(rows>2*start&&cols>2*start){ int endx=cols-1-start; int endy=rows-1-start; //从左到右打印一行 for(int i=start;i<=endx;i++){ s1.add(matrix[start][i]); } //从上到下打印一列 if(endy>start){ for(int i=start+1;i<=endy;i++){ s1.add(matrix[i][endx]); } } //从右到左打印一行 if(endy>start&&endx>start){ for(int i=endx-1;i>=start;i--){ s1.add(matrix[endy][i]); } } //从下到上打印一列 if(endy>start+1&&endx>start){ for(int i=endy-1;i>start;i--){ s1.add(matrix[i][start]); } } start++; } return s1; } }
相关文章推荐
- 【转】【算法题目】顺时针打印矩阵
- 算法题目---顺时针打印矩阵
- 笔试题目:顺时针打印矩阵
- 题目1391:顺时针打印矩阵
- [经典算法]优雅实现顺时针打印矩阵
- 每天一道算法题——顺时针打印矩阵
- [Jobdu] 题目1391:顺时针打印矩阵
- [算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素
- 程序员面试题精选100题(51)-顺时针打印矩阵[算法]
- 笔试算法题(26):顺时针打印矩阵 & 求数组中数对差的最大值
- 九度OJ-题目1391:顺时针打印矩阵
- 【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
- 顺时针打印矩阵[算法]
- 面试算法(十九)顺时针打印矩阵
- 题目1391:顺时针打印矩阵
- 题目1391:顺时针打印矩阵
- 算法题0003-顺时针转圈打印矩阵
- 算法题/顺时针打印矩阵
- 每天一个算法之顺时针打印矩阵
- [算法学习]顺时针打印矩阵