leetcode59. Spiral Matrix II(螺旋矩阵 II)JAVA实现

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 ]
]

实现思路:给定四个边界,left = 0,right = n-1,  top = 0,bottom = n-1,

然后每次进行四遍循环,

(top)left->right  循环结束后top+1

(right)top->bottom  循环结束后right-1

(bottom)right->left  循环结束后bottom-1

(left)bottom->top  循环结束后left+1

结束条件是index>n*n。

class Solution {
    public int[][] generateMatrix(int n) {
        int [][]res = new int[n][n];
        int left = 0;
        int right = n-1;
        int top = 0;
        int bottom = n-1;
        int index = 1;
        int quit = n*n;
        while(index<=quit){
            for(int i=left;i<=right;i++)
                res[top][i] = (index++);
            top++;
            for(int i=top;i<=bottom;i++)
                res[i][right] = (index++);
            right--;
            for(int i=right;i>=left;i--)
                res[bottom][i]=(index++);
            bottom--;
            for(int i=bottom;i>=top;i--)
                res[i][left]=(index++);
            left++;
        }
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_25406563/article/details/84496884
今日推荐