JAVA实现顺时针打印矩阵问题(《剑指offer》)

来源:互联网 发布:centos 禁止ping 编辑:程序博客网 时间:2024/05/19 12:14

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 
1    2   3   4 
5    6   7   8 
9   10 11 1
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;        ArrayList<Integer> result = new ArrayList<Integer>();        int start = 0;        while(matrix[0].length > start *2 && matrix.length > start *2){            printMatrixInCircle(matrix,result,start);            start++;        }        return  result;    }     public static void printMatrixInCircle(int [][]matix,ArrayList<Integer>result,int start){        int endX = matix[0].length - start -1;        int endY = matix.length - start -1;       //从左向右打印一行        for(int i = start;i <=endX;i++){            result.add(matix[start][i]);        }        //从上到下        for(int i  = start+1; i <=endY;i++)            result.add(matix[i][endX]);        //从右到左        if(start < endX &&start < endY)            for(int i = endX -1;i>= start;i--)                result.add(matix[endY][i]);        //从下到上        if(start < endX && start < endY-1)            for(int i = endY - 1;i >=start+1;i--)                result.add(matix[i][start]);    }}


0 0
原创粉丝点击