剑指offer-顺时针打印矩阵
来源:互联网 发布:bose蓝牙音响 知乎 编辑:程序博客网 时间:2024/04/30 12:38
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如输入以下矩阵:
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
分析:画图分析,可以考虑递归,每次打印外面一圈,剩下的继续。同时注意剩下的为一行或者一列时的情况。
题目java,将数字依次存入链表(ArrayList)
import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> list=new ArrayList<>(); int columns=matrix[0].length; int rows=matrix.length;if(matrix==null||rows<=0||columns<=0){return null;}int start=0;while(columns>start*2&&rows>start*2){printMatrixInCircle(matrix,columns,rows,start,list);start++;}return list; }private void printMatrixInCircle(int[][] matrix, int columns, int rows,int start,ArrayList<Integer> list) {// TODO Auto-generated method stubint endx=columns-start-1;int endy=rows-start-1;for(int i=start;i<=endx;i++){list.add(matrix[start][i]);}if(endy>start){for(int i=start+1;i<=endy;i++){list.add(matrix[i][endx]);}}if(endx>start&&endy>start){for(int i=endx-1;i>=start;i--){list.add(matrix[endy][i]);}}if(endx>start&&endy>start+1){for(int i=endy-1;i>=start+1;i--){list.add(matrix[i][start]);}}}}
0 0
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- [剑指offer]顺时针打印矩阵
- 《剑指offer》-顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer|顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵
- [Offer收割]编程练习赛1 hihocoder 1270 建造基地 (完全背包)
- 进程间通信——管道
- 新浪微博时间转换工具类
- 会场安排问题(贪心算法)
- Android知识点整理
- 剑指offer-顺时针打印矩阵
- 7种qsort排序方法
- 2016.3.5【初中部 NOIP提高组 】模拟赛A
- sqlite优化
- ubuntu操作系统安装(二) git
- 安装SVN时,报错:解析不了地址
- 【IOI2014】【BZOJ4367】holiday假期
- MySQL聚集函数
- iOS之运行时—对象与类以及相应的数据结构