顺时针打印矩阵
题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思路:这个题比较麻烦,但是把每一步都拆解开思路就清晰了。
实现代码:
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix == null) return null; int rows = matrix.length; if(rows <= 0) return null; int columns = matrix[0].length; ArrayList<Integer> ret = new ArrayList<Integer>(); int start = 0; while(rows > start * 2 && columns > start * 2) { per(ret, matrix, rows, columns, start); start ++; } return ret; } public void per(ArrayList<Integer> list, int[][] matrix, int rows, int columns, int start) { int endR = columns - start - 1; int endC = rows - start - 1; //打印上面一行 for(int i=start; i<=endR; i++) { list.add(matrix[start][i]); } //打印右边一列 if(start < endC) for(int i=start+1; i<=endC; i++) { list.add(matrix[i][endR]); } //打印下面一行 if(start < endR && start < endC) for(int i=endR-1; i>=start; i--) { list.add(matrix[endC][i]); } //打印左边一列 if(start < endR && start < endC - 1) for(int i=endC-1; i>=start+1; i--) { list.add(matrix[i][start]); } } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。