leetcode 59. 螺旋矩阵 II-java实现

题目所属分类

螺旋矩阵II
可以对比之前的leetcode 54. 螺旋矩阵-java实现看

原题链接

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

代码案例:leetcode 59. 螺旋矩阵 II-java实现_第1张图片

题解

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] ans = new int[n][n];
        int [] dx = {0,1,0,-1};
        int[] dy = {1,0,-1,0};
        boolean [][] st = new boolean[n][n];
        for(int i = 1 , x = 0 , y =0 , d = 0;i <= n*n ; i++){
            ans[x][y] = i ;
            st[x][y] = true ;
            int a  = dx[d] + x ;
            int b = dy[d] + y ;           
            if(a < 0 || a >= n || b < 0 || b >= n || st[a][b]){
                d = (d+1)% 4 ;
                 a  = dx[d] + x ;
                 b = dy[d] + y ;
            }
            x = a ;
            y  = b ;
        }
        return ans ;
    }
}

你可能感兴趣的:(LeetCode,leetcode,矩阵,算法)