牛客网 | 顺时针打印矩阵

来源:互联网 发布:上海互联网软件集团 编辑:程序博客网 时间:2024/06/01 20:23

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 static ArrayList<Integer> printMatrix(int [][] matrix) {            ArrayList<Integer> list = new ArrayList<>();            int y1=0,x2=0;            int y3=matrix.length-1,x4=matrix[0].length-1;            while(y1<=y3&&x2<=x4)            {                int x,y;                for (x=x2;x<=x4;x++)                {                    list.add(matrix[y1][x]);                    System.out.println("1 "+matrix[y1][x]);                }                for (y=y1+1;y<=y3;y++)                {                    list.add(matrix[y][x4]);                    System.out.println("2 "+matrix[y][x4]);                }                for (x=x4-1;x>=x2&&y1!=y3;x--)//针对一行的数据                {                    list.add(matrix[y3][x]);                    System.out.println("3 "+matrix[y3][x]);                }                for (y=y3-1;y>=y1+1&&x2!=x4;y--)//针对一列的数据                {                    list.add(matrix[y][x2]);                    System.out.println("4 "+matrix[y][x2]);                }                y1++;                x2++;                y3--;                x4--;            }            return list;        }}


0 0