美文网首页
旋转矩阵II

旋转矩阵II

作者: YocnZhao | 来源:发表于2019-03-08 11:51 被阅读0次

    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表示。
    然后顺时针转圈就好了,其实就是坐标的计算。

    转圈圈

    相关文章

      网友评论

          本文标题:旋转矩阵II

          本文链接:https://www.haomeiwen.com/subject/tmtrpqtx.html