59. 螺旋矩阵 II

2018-12-24  本文已影响0人  郭昊峰

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

示例:

输入:3

输出:[ [ 1, 2, 3 ], 

           [ 8, 9, 4 ],

           [ 7, 6, 5 ]]

这题还是有点绕的,最开始做主要容易忽略中间的[1][1] = 9 的赋值,思路:

1:把一次→↓←↑的赋值看作一次循环,在值i<=n*n为真时,不断重复这个循环。

2:在一次循环内,当完成←→赋值的时候,↑↓赋值的最大值减去1。↑↓同理。

public class Solution {

    public int[,] GenerateMatrix(int n) {

        int[,] arr = new int[n,n];

            int num = 1;//赋值的值

            int col = n;//循环赋值时的纵向次数

            int row = n;//循环赋值时的横向次数

            int x = 0;//标记数组纵向

            int y = -1;//标记数组横向

            while (num <=n * n)

            {

                for (int i = 0; i < row; i++)

                {

                    arr[x,y=y+1] = num;

                    num++;

                }

                col--;

                for (int i = 0; i < col; i++)

                {

                    arr[x = x + 1, y] = num;

                    num++;

                }

                row--;

                for (int i = 0; i < row; i++)

                {

                    arr[x, y = y - 1] = num;

                    num++;

                }

                col--;

                for (int i = 0; i < col; i++)

                {

                    arr[x = x - 1, y] = num;

                    num++;

                }

                row--;

            }

            return arr;

    }

}

上一篇 下一篇

猜你喜欢

热点阅读