螺旋遍历二维数组 (螺旋遍历二维数组)

 

思路:

// @Title: 螺旋遍历二维数组 (螺旋遍历二维数组)
// @Author: qisiii
// @Date: 2022-02-21 10:35:20
// @Runtime: 4 ms
// @Memory: 43.2 MB
// @comment: 
// @flag: 
class Solution {
    public static int[] spiralOrder(int[][] matrix) {
        if(matrix==null||matrix.length==0||matrix[0].length==0){
            return new int[0];
        }
        int x=0,y=0;
        //是否访问过
        boolean[][] visited=new boolean[matrix.length][matrix[0].length];
        //行动坐标
        int[][] action={{0,1},{1,0},{0,-1},{-1,0}};
        int[] result=new int[matrix.length*matrix[0].length];
        int count=0;
        int dong=0;
        while(count<matrix.length*matrix[0].length){
            result[count++]=matrix[x][y];
            visited[x][y]=true;
            int nextX=x+action[dong][0];int nextY=y+action[dong][1];
            if(nextX<0||nextX>=matrix.length||nextY<0||nextY>=matrix[0].length||visited[nextX][nextY]){
                dong=(dong+1)%4;
            }
            x=x+action[dong][0];
            y=y+action[dong][1];
        }
        return result;
    }
}
Licensed under CC BY-NC-SA 4.0
最后更新于 2024-10-18