旋转矩阵II

2019-03-08  本文已影响0人  YocnZhao

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

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

这次其实用我之前写的那个也可以,但是这次我们用一个新的思路,新的思路就是硬怼。找到对应的坐标,然后把对应的值赋进去。

public int[][] generateMatrix(int n) {
        int[][] arr = new int[n][n];
        //index是数字,layer是层数。
        int index = 0, layer = 0;
        while (index < n * n) {
            for (int i = layer; i < n - layer; i++) {
                arr[layer][i] = ++index;
            }
            for (int i = layer + 1; i < n - layer; i++) {
                arr[i][n - layer - 1] = ++index;
            }
            for (int i = n - layer - 2; i >= layer; i--) {
                arr[n - layer - 1][i] = ++index;
            }
            for (int i = n - layer - 2; i > layer; i--) {
                arr[i][layer] = ++index;
            }
            layer++;
        }
        return arr;
    }

首先还是分层的思想,爱的魔力转圈圈,从外到内,先把层数分出来,层数用layer表示。
然后顺时针转圈就好了,其实就是坐标的计算。

转圈圈
上一篇下一篇

猜你喜欢

热点阅读