面试题29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]


class Solution {
    public int[] spiralOrder(int[][] matrix) {
        if(matrix.length==0 || matrix == null){
            return new int[0];
        }
        ArrayList ans=new ArrayList<>();
        int flag=1;
        int x=0;
        int y=0;
        boolean[][] vis=new boolean[matrix.length][matrix[0].length];
        while(ans.size()=matrix.length || y<0 || y>=matrix[0].length || vis[x][y]){
                if(flag==1){
                    flag=2;
                    y--;
                    x++;
                }else if(flag==2){
                    flag=3;
                    x--;
                    y--;
                }else if(flag==3){
                    flag=4;
                    y++;
                    x--;
                }else{
                    flag=1;
                    x++;
                    y++;
                }
            }else{
                ans.add(matrix[x][y]);
                vis[x][y]=true;
                if(flag==1){
                    y++;
                }else if(flag==2){
                    x++;
                }else if(flag==3){
                    y--;
                }else{
                    x--;
                }
            }

        }
        int len=ans.size();
        int[] array=new int[len];
        for(int i=0;i

你可能感兴趣的:(面试题29. 顺时针打印矩阵)