顺时针打印矩阵

按照顺时针的顺序打印一个二维数组
每次打印之前我们要记录开始的startX,endX,startY,endY;每次打印有4种情况,

  1. startX
  2. startX=endX&&startY 3.startX 4.startX=endX&&startY=endY//打印最后一个

除这四种之外都表示已经打印完毕
即:startX>endY||startY>endY

用递归实现

public class Solution {
    public ArrayList printMatrix(int [][] matrix) {
        ArrayList result = new ArrayList() ;
        if(matrix==null || matrix.length==0) { return result ; }
 
        printMatrixClockWisely(matrix, 0, 0, matrix.length - 1, matrix[0].length - 1, result);
 
        return result ;
    }
    public void printMatrixClockWisely(int[][] matrix, int startRow, int startCol, int endRow, int endCol, ArrayList result) {
        if(startRow=startCol; j--) { result.add(matrix[endRow][j]) ; }     //Left
            for(int i=endRow-1; i>=startRow+1; i--) { result.add(matrix[i][startCol]) ; }   //Up
            printMatrixClockWisely(matrix, startRow + 1, startCol + 1, endRow - 1, endCol - 1, result) ;
        }else if(startRow==endRow && startCol

你可能感兴趣的:(顺时针打印矩阵)