LeetCode - Spiral Matrix II

Posted IncredibleThings

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - Spiral Matrix II相关的知识,希望对你有一定的参考价值。


Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

Example:

Input: 3
Output:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]


本题就是按照螺旋的顺序把数字依次塞进去,我们可以维护上下左右边界的四个变量,一圈一圈往里面添加。最后要注意的是,如果n是奇数,要把中心那个点算上。

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        //initialize four top corner
        int left = 0;
        int right = n-1;
        int bottom = n-1;
        int top = 0;
        int num = 1;
        
        while (left < right && top < bottom){
            //left -> right
            for(int i=left; i<right; i++){
                res[top][i] = num++;
            }
            //top -> bottom
            for(int i=top; i<bottom; i++){
                res[i][right] = num++;
            }
            //right -> left
            for (int i = right; i>left; i--){
                res[bottom][i] = num++;
            }
            //bootom -> top
            for(int i = bottom; i>top; i--){
                res[i][left] = num++;
            }
            left++;
            right--;
            bottom--;
            top++;
            
        }
        if(n % 2 == 1){
            res[n/2][n/2] = num;
        }
        return res;
    }
}

 






以上是关于LeetCode - Spiral Matrix II的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 54. Spiral Matrix

leetcode-spiral-matrix-i-ii

#Leetcode# 59. Spiral Matrix II

LeetCode 885. Spiral Matrix III

LeetCode 54. Spiral Matrix

Leetcode54 Spiral Matrix