小东Freeman + 关注

签名:我们爱我们的倒霉工作,也爱这千疮百孔的世界。

螺旋矩阵的解题详解

发表于 15天前   311次查看    0评论  3 赞

题目:

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


事例:

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


解题思路:

我们可以看到他是由外层往内层不断叠加的,呈现螺旋++的状态,所以我们只需要控制每个数组的下标即可,所以由上、右、下、左的顺序递增即可。


代码:

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] arr = new int[n][n];
        int c = 1, j = 0;
        while (c <= n * n) {

			for (int i = j; i < n - j; i++) {
				arr[j][i] = c++;
			}
			for (int i = j + 1; i < n - j; i++) {
				arr[i][n - j - 1] = c++;
			}
			for (int i = n - j - 2; i >= j; i--) {
				arr[n - j - 1][i] = c++;
			}
			for (int i = n -j - 2; i > j; i--) {
				arr[i][j] = c++;
			}
			j++;
		}

        return arr;
    }

}


用时:2ms

3人已赞


本文由Fun言网 – 小东Freeman创作,转载请务必附上本文链接和出处,欢迎参与我们的付费投稿计划


你还没有登录,请先 登录注册!
文章评论0