顺时针打印矩阵

顺时针打印矩阵

http://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a

打印是有规律的,以最外一圈为例,设矩阵为i行j列,即a[i][j]
(1)从a[0][0]打印到a[0][j]
(2)从a[j][1]打印到a[i][j]
(3)从a[i][j-1]打印到a[i][0]
(4)从a[i-1][0]打印到a[1][0]
最外一圈打印完毕,如果将最外一圈删掉形成新的数组,那么依然可以如上所述进行打印,
非正方形矩阵最后的情况是剩一行,或者一列,对这两种情况分别进行处理。
如果是正方形的矩阵,最后是剩四个元素,此时数组不再刷新,直接打印完毕即可。
以下是代码

import java.util.ArrayList;

public class PrintMatrix {

    ArrayList<Integer> list=new ArrayList<Integer>();
    int i=0,j=0;
    public  ArrayList<Integer> printMatrix(int [][] matrix) {
        if(matrix==null) return list;
        i=0;j=0;
//当最后只有一行时
        if(matrix.length==1&&matrix[0].length>=1) {
            for(j=0;j<matrix[0].length;j++) {
                list.add(matrix[0][j]);
            }
            return list;
        }
//d当最后只有一列时
        else if(matrix[0].length==1&&matrix.length>1) {
            for(i=0;i<matrix.length;i++) {
                list.add(matrix[i][0]);
            }
            return list;
        }
//对外圈元素进行顺时针打印
        else {
        while(j<matrix[0].length) {
               list.add(matrix[i][j]);
               j++;
           }
           j--;i++;
           while(i<matrix.length) {
               list.add(matrix[i][j]);
               i++;
           }
           i--;j--;
           while(j>=0) {
               list.add(matrix[i][j]);
               j--;
           }
           j++;i--;
           while(i>=1) {
               list.add(matrix[i][j]);
               i--;
           }
           int[][] newMatrix=fresh(matrix);
           list=printMatrix(newMatrix);
        }
           return list;
    }
//“刷新”数组,即删掉数组的最外一圈元素
    private int[][] fresh(int[][] matrix) {
        if(matrix.length<=2||matrix[0].length<=2) return null;
        int[][] newMatrix=new int[matrix.length-2][matrix[0].length-2];
        int i=1,j=1;
        for(i=1;i<matrix.length-1;i++) {
            for(j=1;j<matrix[0].length-1;j++) {
                newMatrix[i-1][j-1]=matrix[i][j];
            }
        }
        return newMatrix;
    }
}
全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务