LeetCode 螺旋矩阵 II

版权声明:未经允许禁止转载 https://blog.csdn.net/weixin_38481963/article/details/87974527

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

示例:

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

方法和螺旋矩阵一样

解决方案:

public int[][] generateMatrix(int n) {
        int k = n*n;
        int val = 1;
        int ans[][] = new int[n][n];
        if(k==0) return ans;
        int a = -1, b = -1, c = -1, d = 0;
        int i = -1,j = -1;
        while(k>0){
            a++;b++;c++;d++;
            for(i++,j++ ;j<n-a; j++)
            {
                ans[i][j] = val;val++;k--;
            }
            if(k==0) break;
            for(--j,i++; i<n-b; i++)
            {
                ans[i][j] = val;val++;k--;
            }
            if(k==0) break;
            for(--i,--j; j>=c; j--)
            {
                ans[i][j] = val;val++;k--;
            }
            if(k==0) break;
            for(j++,i--; i>=d; i--)
            {
                ans[i][j] = val;val++;k--;
            }
        }
        return ans;
    }

猜你喜欢

转载自blog.csdn.net/weixin_38481963/article/details/87974527