剑指offer——顺时针打印矩阵
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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)
1 import java.util.ArrayList; 2 public class Solution { 3 public ArrayList<Integer> printMatrix(int [][] matrix) { 4 if(matrix==null){ 5 return null; 6 } 7 int start=0; 8 ArrayList<Integer> list=new ArrayList<Integer>(); 9 while(matrix[0].length>2*start && matrix.length>2*start){ 10 int columns=matrix[0].length; 11 int rows=matrix.length; 12 int endx=columns-1-start; 13 int endy=rows-1-start; 14 //从左到右打印一行 15 for(int i=start;i<=endx;i++){ 16 list.add(matrix[start][i]); 17 } 18 //从上到下打印一列 19 if(start<endy){ 20 for(int i=start+1;i<=endy;i++){ 21 list.add(matrix[i][endx]); 22 } 23 } 24 //从右到左打印一行 25 if(start<endx && start<endy){ 26 for(int i=endx-1;i>=start;i--){ 27 list.add(matrix[endy][i]); 28 } 29 } 30 //从下到上打印一列 31 if(start<endx && start<endy-1){ 32 for(int i=endy-1;i>start;i--){ 33 list.add(matrix[i][start]); 34 } 35 } 36 start++; 37 } 38 return list; 39 } 40 }
posted on 2019-10-29 23:39 Joyce&wang 阅读(174) 评论(0) 收藏 举报
浙公网安备 33010602011771号