LeetCode 059 螺旋矩阵II Java实现

LeetCode059
LeetCode 059 螺旋矩阵II Java实现_第1张图片

题目

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

示例:

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
通过次数45,922提交次数58,820

代码

这道题和054其实挺像的,基本只要会054, 059就不在话下.
思路也是和那道题一样,先往右,再往下,再往左,再往上的循环
需要注意的是每次for语句判断的时候会额外的加上或减少一个1
要么在每次循环后补回来,要么每次for循环时额外定义一个数来操作

class Solution {
     
    public int[][] generateMatrix(int n) {
     
        int[][] ans = new int[n][n];
        int count = 1;//用于赋值
        int x = 0;//上届
        int x2 = n-1;//下届
        int y = 0;//左界
        int y2 = n-1;//有界
        int i = 0;//定位数组
        int j = 0;
        while (count <= n*n){
     
            for (j = y; j <= y2; j++){
     
                ans[i][j] = count++;
            }
            x++;
            j--;
            for(i = x; i <= x2; i++){
     
                ans[i][j] = count++;
            }
            y2--;
            i--;
            for(j = y2; j >= y; j--){
     
                ans[i][j] = count++;
            }
            x2--;
            j++;
            for(i = x2; i >= x ; i--){
     
                ans[i][j] = count++;
            }
            y++;
            i++;
        }
        return ans;
}
}

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