您的位置:首页 > Web前端

牛客网-剑指offer-19-顺时针打印矩阵

2017-09-14 00:35 441 查看
时间限制:1秒 空间限制:32768K 热度指数:162681
本题知识点: 数组
 算法知识视频讲解


题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 || matrix.length==0 || matrix[0].length==0) {

            return null;

        }

        ArrayList<Integer> list = new ArrayList<Integer>();

        int i=0,j=0;

        int row = matrix.length;

        int col = matrix[0].length;

        for(int round = 0;;round++) {

            i=round;j=round;

            if(j>col-1-round) {

                break;

            }

            while(j<=col-1-round) {

                list.add(matrix[i][j]);

                j++;

            }

            j--;

            i++;

            if(i>row-1-round) {

                break;

            }

            while(i<=row-1-round) {

                list.add(matrix[i][j]);

                i++;

            }

            i--;

            j--;

            if(j<round) {

                break;

            }

            while(j>=round) {

                list.add(matrix[i][j]);

                j--;

            }

            j++;

            i--;

            if(i<1+round) {

                break;

            }

            while(i>=1+round) {

                list.add(matrix[i][j]);

                i--;

            }

        }

        return list;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法